2017-07-17 4 views
4

私はJupyter Notebookを使いたいです。私がバーチャルボックス内のVMでそれを実行すると、VMの状態を保存して、次に翌日中断したところですぐに取り上げることができます。私がドッカーのコンテナでそれを実行する場合、私は同様のことをすることはできますか?つまり、コンテナの「状態」をディスクにダンプし、それをクランクで戻して「状態」をリロードしますか?ドッカーコンテナを冬眠させる方法はありますか?

答えて

3

docker checkpointのように私はここで達成しようとしているものかもしれません。ドキュメントにそのように記述するものはあまりありません。実際、docker checkpointのドキュメントでは、「チェックポイントを管理する」と言いますが、これは大して役に立たないものです。

UPDATE:これは、実際にはドッキング・チェックポイントが達成すべきものです。チェックボックスをチェックすると、それは保存され、docker start --checkpoint [my_checkpoint] jupyter_notebookでバックアップを開始でき、実行していたものがRunningの状態であることが示されます。ただし、Runningノートブックを使用しようとすると失敗します。私はこれがCRIUの問題かJupyterの問題かどうかはわかりませんが、適切なgit issue trackerにそれを表示します。

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/

ドッカpauseコマンドは、指定されたコンテナ内のすべてのプロセスを中断しています。 Linuxでは、これはcgroupsフリーザを使用します。伝統的に、プロセスを中断すると、SIGSTOPシグナルが使用されます。これは中断されているプロセスによって観測されます。 cgroupsフリーザーでは、プロセスは認識されず、キャプチャできず、中断され、その後再開されます。

VirtualBoxハイバネーションとの重要な違いとして、コンテナ化されたプロセスのメモリ状態のディスク永続性はないことを考慮してください。

関連する問題