Docker commitは、commitコマンドが発行されるたびに新しいイメージを作成します。現在実行中のコンテナーでコミットを発行し、変更を既存のイメージに保存することは可能ですか(ここでの既存のイメージは、コンテナーが生成されたイメージです)。このようにして、コミットを実行するたびに新しいイメージが作成されることはありません。
これが可能かどうか教えてください。
名前とタグを使用すると、必要な画像が既に更新されています。コミット中は、コンテナIDの後に同じイメージの名前を付けてください。 doc から:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours desperate_dubinsky
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours focused_hamilton
$ docker commit c3f279d17e0a svendowideit/testimage:version3
編集:続行する前にコンテナを停止することを強くお勧めします。これにより、次の実行で陳腐化する可能性を減らすことができます。また、別のタグを使用してテストし、実際のターゲットにタグを再設定することをお勧めします。
Edit2:@MilindDeoreによって指摘されているように、これは物理的に前のイメージを上書きするのではなく、名前を再アドレス指定します。そのため、手動で削除するか、ガベージコレクションが行われるまで待機する必要があります(配置されている場合)。
Dockerイメージは不変であり、ドキュメントのテキストの下にあります。
Dockerイメージは読み取り専用です。 Dockerがイメージからコンテナーを実行すると、アプリケーションが実行されるイメージ(UnionFSを使用)の上に読み取り/書き込みレイヤーが追加されます。
したがって、@ hurturkによる提案は、新しい画像を作成するものであり、質問で尋ねられるものではありません。
コンテナの変更から新しいイメージを作成するには、コマンドを1つだけ実行するだけです。ただし、その前に、コンテナを変更しましょう。
このコンテナー内では、Fedoraで通常行うことは何でも自由に行えます。この場合、Gitをインストールしてからコンテナをコミットします。リンクされている手順はCentOS 6にGitをインストールするためのものですが、このFedoraコンテナーでも機能します。
これらの手順を完了したら、終了せずにシェルから切断または切り離すことができます。エスケープシーケンスCtrl-p + Ctrl-qを使用します。
最後に、名前付きイメージへの変更をコミットします。このコマンドは、コンテナー9c09acd48a25をFedora-base-with-gitという名前のイメージに変換します。
docker commit 9c09acd48a25 Fedora-base-with-git
Dockerの設計では、「コミットは安価」という概念を使用しています。バージョン管理と同様に、イメージの履歴の中でいつでも、頻繁にコミットすることをお勧めします。