ローカル ホスト マシンで Docker のイメージが正確にどこに保存されるのか知りたいです。 または を使用せずに、Docker-Hub
実際Dockerfile
の Docker イメージではなく Docker イメージを共有できますか? また、Docker イメージを Docker-Hub に「プッシュ」すると、正確には何が起こるのでしょうか?
ベストアンサー1
Docker イメージはファイルシステム レイヤーとして保存されます。Dockerfile 内のすべてのコマンドはレイヤーを作成します。docker commit
いくつかの変更を加えた後、コマンド ラインから (docker run
おそらく 経由で) を使用してレイヤーを作成することもできます。
これらのレイヤーは、デフォルトでは の下に保存されます/var/lib/docker
。 そこからファイルを(理論的には)選択して別の Docker サーバーにインストールすることは可能ですが、Docker が使用する内部表現を変更するのはおそらく良い考えではありません。
イメージをプッシュすると、これらのレイヤーはレジストリ (デフォルトでは Docker Hub レジストリ、ただしイメージに別のレジストリ プレフィックスをタグ付けしない限り) に送信され、そこに保存されます。プルするときには、レイヤー ID を使用して、レイヤーがすでにローカルにあるか、ダウンロードする必要があるかを確認します。 を使用して、docker history
どのレイヤー (他のイメージ) が使用されているか (および、ある程度、どのコマンドがレイヤーを作成したか) を確認できます。
Docker Hub レジストリにプッシュせずにイメージを共有するオプションとしては、次のものが最適でしょう。
docker save
イメージまたはdocker export
コンテナ。これにより、tar ファイルが標準出力に出力されるので、 のような操作を行うことになります。その後、別のホストでまたは をdocker save 'dockerizeit/agent' > dk.agent.latest.tar
使用できます。docker load
docker import
独自のプライベートレジストリをホストします。 -古い、コメントを参照して
ください docker レジストリイメージ 私たちは、 S3 バックアップレジストリ 必要に応じて開始および停止できます(すべての状態は選択した s3 バケットに保存されます)。セットアップは簡単です。これは、レジストリにプッシュしたときに何が起こるかを確認する興味深い方法でもあります。別のレジストリを使用するquay.io(私は個人的に試したことはありません) ただし、Docker Hub に関して抱いている懸念は、おそらくここでも当てはまるでしょう。