1

私はドッカーを使用していますが、基本イメージの「子」イメージに変更を反映できるかどうか疑問に思っていました。次の一連のアクションにより、私の言いたいことがより明確になると思います。

docker run -i -t baseimage               // start up baseimage

<detach while leaving baseimage running>

docker commit <baseimage id> childimage  // new image created from baseimage

docker run -i -t baseimage               // start up baseimage

touch test.txt                           // make some small change

<detach while leaving baseimage running>

docker commit <baseimage id> baseimage   // save base image

docker run -i -t childimage              // start up childimage

ls test.text                             // test.txt isn't there

これを実行したい理由は、いくつかの子イメージを作成するための基本イメージがあったからです。子イメージを作成して初めて、すべてのイメージに Java をインストールする必要があることに気付きました。それぞれの子イメージを調べて Java をインストールするよりも、どうにかして Java をベース イメージにインストールし、それを「子」に伝播させる方がはるかに簡単です。

私はdockerが初めてだと認めます。そのようなことは可能ですか? そうでない場合、一度に同じ変更を加えて複数の画像を変更するにはどうすればよいですか? それは可能ですか?ありがとう。

4

2 に答える 2

3

実行中の docker コンテナーは、「インスタンスの」タイプの方法で作成されたイメージに関連しています。つまり、意図した方法で変更を「伝播」することはできません。実行中のコンテナーを手動で変更するのではなく、 Dockerfileを使用して Docker イメージをビルドする方法を記述した方がはるかに優れています。

于 2015-07-28T20:27:25.963 に答える
1

いいえ。

コンテナは一時的なものです。パッチを当てようとするのではなく、破棄して最初からやり直す必要があります。

代わりに、Dockerfile を使用してコンテナーのイメージを作成します。変更する場合は、Dockerfile を更新し、古いコンテナーを新しいバージョンに置き換えます。

于 2015-07-28T20:31:12.960 に答える