2016-07-27 5 views

答えて

0

変更を加えて再構築することはできません。ボリュームの永続データを保存する必要があります。

しかし、あなたはcommitを使用することができ、変更内容を保存するには:

https://docs.docker.com/engine/reference/commandline/commit/

コンテナの変化から新しいイメージを作成します

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

それは、できるコンテナのファイルの変更や設定を新しいイメージ にコミットすると便利です。これにより、 対話型シェルを実行してコンテナをデバッグしたり、動作中のデータセットを別のサーバーにエクスポートしたりできます。 一般的には、Dockerfilesを使用して、画像を管理し、文書化された保守可能な方法で画像を管理する方がよいです( )。Read more about valid image names and tags.

コミット操作には、ボリューム に含まれているデータはコンテナ内に格納されません。

デフォルトでは、コミットされるコンテナとそのプロセスは、イメージがコミットされている間に一時的に になります。これにより、 コミットの作成中にデータが破損する可能性が低くなります。

+0

これを行うことはできますが、それはDockerのための少しの反パターンです。理想的には、Dockerfile(または必要に応じてボリューム)に最終更新を組み込むことをお勧めします。 – ldg

+0

はい、ドッカーのコミットは、画像自体ではなくコンテナに反映されます。 – TheRimalaya

+0

afaikが正しくありません。 – ldg

1

はい、あなたはあなたのドッキングウィンドウの画像MYIMAGEにタグを付ける場合は、ちょうど

FROM myimage

とこれはあなたの追加変更

+0

これは、編集/タグ付けされたイメージが、将来アクセス可能になる(たとえば、アクセス可能なレポに保存される)ことを前提としています。それは動作する可能性がありますが、Dockerfilesやコードリポジトリでは再作成できないため、かなり脆弱な解決策です。 – ldg

3

方法で、すべてのドッキングウィンドウのビルド作業、後に置くと、あなたの他のDockerfileを開始あなたが描いていること。

レイヤの依存関係だけを考慮する必要があります。

は、それが持っているので、あなたがcmd1を変更する場合にのみ、このコマンドよりも​​3210を変更した場合、彼らはcmd1
に対して異なる可能性があるため、すべての層が、再建され、再構築されますDockerfile

FROM something 
RUN cmd1 
RUN cmd2 
RUN cmd3 
RUN cmd4 

考えてみましょう他のレイヤには影響しません。

どのようなコマンドをどのような順序で実行する必要があるか考えてみましょう。おそらく、命令を並べ替えることで改善できます。

関連する問題