web-dev-qa-db-ja.com

Dockerでコンテナのスナップショットを撮る方法

コンテナスナップショットを取得して、別のdocker Hostにスナップショットをロードするにはどうすればよいですか。コンテナのスナップショットを知りたいのですが、イメージではありません。ドッカーのエクスポート/インポートおよび保存/ロードコマンドと混同されます。それらをより深く理解するために、より明確にしたり文書を入手したいです。

コンテナと屋根を実行するためのメタデータを持つスナップショット。他のドッカーホストに存在する正確な状態。この方向でのヘルプは素晴らしいでしょう。

50
tanmally

コマンドdocker commit は、コンテナのスナップショットを取得します。そのスナップショットはイメージであり、別のホストにプルできるように(プライベート)リポジトリに置くことができます。

画像を使用しないオプション(回避したいという)は、実際には save および load です。ドキュメントによると、これにより、すべてのファイルレイヤーでコンテナが保存されます。したがって、Ubuntu>JavaJDKなどの子コンテナを使用したセットアップがある場合>Elasticsearch>my-container、4つのファイルレイヤーすべてが入りますそこ。ただし、最初の3つのレイヤーが他のホストに既にイメージとして存在している場合があります。その場合、saveはかなりのオーバーヘッドになります。次に、 export および import を使用できます。ドキュメントによれば、これは最上位ファイル層のみをエクスポートします(言い換えると、下の画像ではなく、コンテナ)。

画像、コンテナ、ファイルレイヤーなどの詳細については、 公式ドキュメント (例: file system )を参照してください。

41
qkrijger

実行状態を含む「正確な状態」を探している場合、CRIU(チェックポイント)を使用する必要があります。

Linuxホストマシンの場合、DockerはCRIUを使用してコンテナの実行状態を保存できます。 CRIUはまだ「実験的」であり、次のコマンドを実行することで(実験モードを有効にした後)可能なすべてのコマンドを確認できます。

docker checkpoint

--save-dirオプションを使用して、選択したディレクトリにチェックポイントを配置できます。

次に使用できます

docker start --checkpoint (checkpoint name) --checkpoint-dir (checkpoint directory)

チェックポイントを復元します。

サーバーを移動する場合は、画像を携帯する必要があります。

詳細については、ドキュメントをご覧ください: https://docs.docker.com/engine/reference/commandline/checkpoint/

7
dGRAMOP