2017-07-17 80 views
4

我喜歡使用Jupyter Notebook。如果我在虛擬機的虛擬機中運行它,我可以保存虛擬機的狀態,然後在第二天離開的地方繼續。如果我要在碼頭集裝箱中運行它,我可以做類似的事嗎?即將容器的「狀態」轉儲到磁盤,然後重新啓動並重新加載「狀態」?有沒有一種方法來休眠碼頭集裝箱

回答

3

看起來像docker checkpoint可能是我在這裏試圖完成的事情。文檔中沒有太多描述它的文檔。實際上,docker checkpoint的文檔中提到了「管理檢查點」,這是大量無用的。

更新:事實上,這是碼頭檢查點應該完成的。當我檢查我的jupyter筆記本容器時,它會保存它,我可以用docker start --checkpoint [my_checkpoint] jupyter_notebook來啓動備份,並且它顯示我運行的狀態爲Running狀態。但是,嘗試使用Running筆記本電腦失敗。我不確定這是一個CRIU問題還是一個Jupyter問題,但我會在適當的git問題跟蹤器中提出。

Anyhoo docker checkpoint是應該提供VM-save-state/hibernate樣式功能的東西。 「

0

如果你只是停止容器,進入休眠狀態:

docker stop myjupyter 
(hours pass) 
docker start myjupyter 
docker attach myjupyter 

我做這一切的時候,尤其是與在他們網絡瀏覽器的泊塢窗容器。

+2

」容器內的主要進程將收到SIGTERM,並在寬限期後,SIGKILL「 - https://docs.docker.com/engine/reference/commandline/stop/ 這聽起來不像我在找什麼...... – Scott

+0

Jupyter定期自動保存你的工作環境,所以這個工作,我一直這樣做。你說得對,它可能不適用於其他程序。 – FuzzyChef

+0

但是如果我有一個需要2天計算的變量,當我再次啓動我的容器時,我將不得不重新計算它。目標不是保存我輸入的內容,而是保存計算機完成的工作。 – Scott

3

我能看到的最接近是docker pause <container-id>

https://docs.docker.com/engine/reference/commandline/pause/

的碼頭工人暫停命令暫停在指定的容器中的所有進程。在Linux上,這使用cgroups冷凍機。傳統上,在暫停進程時,會使用SIGSTOP信號,這可以通過暫停進程來觀察。對於cgroups冷凍機,該過程不知道,無法捕獲,它正在暫停,隨後又恢復。

考慮到作爲對VirtualBox的冬眠一個重要的區別,有集裝箱進程的內存狀態沒有磁盤持久性。