コンテナスナップショットを取得して、別のdocker Hostにスナップショットをロードするにはどうすればよいですか。コンテナのスナップショットを知りたいのですが、イメージではありません。ドッカーのエクスポート/インポートおよび保存/ロードコマンドと混同されます。それらをより深く理解するために、より明確にしたり文書を入手したいです。
コンテナと屋根を実行するためのメタデータを持つスナップショット。他のドッカーホストに存在する正確な状態。この方向でのヘルプは素晴らしいでしょう。
コマンドdocker commit
は、コンテナのスナップショットを取得します。そのスナップショットはイメージであり、別のホストにプルできるように(プライベート)リポジトリに置くことができます。
画像を使用しないオプション(回避したいという)は、実際には save および load です。ドキュメントによると、これにより、すべてのファイルレイヤーでコンテナが保存されます。したがって、Ubuntu>JavaJDKなどの子コンテナを使用したセットアップがある場合>Elasticsearch>my-container、4つのファイルレイヤーすべてが入りますそこ。ただし、最初の3つのレイヤーが他のホストに既にイメージとして存在している場合があります。その場合、save
はかなりのオーバーヘッドになります。次に、 export および import を使用できます。ドキュメントによれば、これは最上位ファイル層のみをエクスポートします(言い換えると、下の画像ではなく、コンテナ)。
画像、コンテナ、ファイルレイヤーなどの詳細については、 公式ドキュメント (例: file system )を参照してください。
実行状態を含む「正確な状態」を探している場合、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/