私はDockerで数日間遊んでいて、すでにいくつかのイメージを作成しました(本当に楽しかったです!)。今、私は自分の仕事を続けたいと思ってsave
とexport
コマンドに来ましたが、私はそれらを完全に理解していません。
違いは何であるsave
とexport
ドッカーでは?
私はDockerで数日間遊んでいて、すでにいくつかのイメージを作成しました(本当に楽しかったです!)。今、私は自分の仕事を続けたいと思ってsave
とexport
コマンドに来ましたが、私はそれらを完全に理解していません。
違いは何であるsave
とexport
ドッカーでは?
回答:
短い答えは:
save
イメージをフェッチします:VMまたは物理サーバーの場合、インストール.ISOイメージまたはディスクになります。基本オペレーティングシステム。
イメージの構築に必要なすべてのチェーンのレイヤーとメタデータをパックします。次に、この「保存された」イメージチェーンを別のDockerインスタンスに読み込み、これらのイメージからコンテナを作成できます。
export
通常のVMのスナップショットのように、コンテナ全体をフェッチします。もちろんOSを保存しますが、加えた変更、コンテナの寿命中に書き込まれたデータファイルも保存します。これは、従来のバックアップに似ています。
コンテナのファイルシステムを含むフラットな.tarアーカイブを提供します。
編集:私の説明は依然として混乱を招く可能性があるため、これらのコマンドの1つはコンテナーで機能し、他のコマンドは画像で機能することを理解することが重要だと思います。
画像は、単一のバイトを変更しないであろうことから、0または1000のコンテナを開始し、「死んだ」または不変として考慮しなければなりません。そのため、以前にシステムインストールISOと比較しました。ライブCDに近いかもしれません。
コンテナ「ブーツ」の画像とその上に追加の層を追加します。このレイヤーは、コンテナの変更(作成/変更/削除されたファイル...)を格納します。
docker commit
)作成できます。その後save
、画像を表示できます。または私はexport
直接コンテナをすることができます。そして、両方の方法(save
画像とexport
コンテナ)は同じ結果になりますか?
export
、コンテナファイルシステムを含むフラットな.tarアーカイブが作成されます。save
画像の構築に必要なすべてのチェーンのレイヤーとメタデータをパックします。次に、この " saved
"イメージチェーンを別のDockerインスタンスに読み込み、これらのイメージからコンテナーを作成できます。
export
機能なしでも行うことができます。
export
すべてのメタデータが失われるため、そのイメージを使用してコンテナーを実行しようとする場合は、CMDと他のmetdataを思い出してください。 save
私にとってはうまくいきましたが、エクスポートは苦痛でした
コマンドsave
とexport
コマンドの間には、主に2つの違いがあります。
save
コマンドは、画像全体を履歴とメタデータとともに保存しexport
ますが、コマンドはファイル構造のみをエクスポートします(履歴とメタデータなし)。したがって、エクスポートされたtarファイルは保存されたtarファイルよりも小さくなります。
あなたが新しいイメージを作成するためのエクスポートされたファイルシステムを使用する場合、この新しいイメージはいずれも含まないであろうUSER
、EXPOSE
、RUN
あなたのDockerfile等からのコマンド。ファイル構造のみが転送されます。したがって、Dockerfileで上記のキーワードを使用している場合、exportコマンドを使用してイメージを別のマシンに転送することはできません。常にsaveコマンドを使用する必要があります。
エクスポートされた画像にはレイヤーや履歴情報が保存されないため、サイズが小さくなり、ロールバックできなくなります。
保存された画像には、レイヤーと履歴情報が含まれているため、さらに大きくなります。
これを顧客に提供する場合、Qはそれらのレイヤーを保持しますか?
Docker save イメージから提供された各引数に対して、すべての親レイヤー、すべてのタグ+バージョン、または指定されたrepo:tagを含むtarファイルリポジトリを作成します。
Docker export Containerからの指定されたボリュームのコンテンツなしでフラットなコンテンツを含む指定されたファイル(tarまたはtgzの可能性があります)を生成します。
docker saveはdocker imageで使用する必要がありますが、docker exportはコンテナーで使用する必要があります(実行中のイメージと同様)
使用量を保存
Docker保存[オプション]画像[画像...]
画像をtarアーカイブに保存します(デフォルトでSTDOUTにストリーミングされます)
--help = false使用法を出力-o、--output = "" STDOUTの代わりにファイルに書き込む
輸出使用
docker export [OPTIONS] CONTAINER
コンテナーのファイルシステムの内容をtarアーカイブとしてエクスポートする
--help = false使用法を出力-o、--output = "" STDOUTの代わりにファイルに書き込む
export
:container (filesystem)
-> image tar
。
import
:exported image tar
-> image
。1つのレイヤーのみ。
save
:image
-> image tar
。
load
:saved image tar
-> image
。すべてのレイヤーが復元されます。
以下からのアクション、Second Editionの中ドッカー P190。
レイヤー化されたイメージは、イメージの履歴、コンテナー作成メタデータ、および削除またはオーバーライドされた可能性のある古いファイルを維持します。
フラット化されたイメージには、ファイルシステム上の現在のファイルセットのみが含まれます。