1. ホーム

[解決済み】Docker-Hubを使用せずにDocker-Imageを共有するには?

2022-05-01 22:22:09

質問

Dockerのイメージは、ローカルのホストマシンのどこに保存されているのでしょうか? Docker-Imageを共有するために Docker-Hub または Dockerfile が、「本当の」Docker-Imageなのか?そして、Docker-ImageをDocker-Hubに'push'すると何が起こるのでしょうか?

解決方法は?

Dockerイメージはファイルシステムのレイヤーとして保存されます。Dockerfileの全てのコマンドはレイヤーを作成します。また、レイヤーを作成するには docker commit を変更した後、コマンドラインから ( docker run おそらく)。

これらのレイヤーは、デフォルトでは /var/lib/docker . 理論的には)そこからファイルを選んで、別のDockerサーバーにインストールすることもできますが、Dockerが使用する内部表現を弄るのはおそらく悪い考えでしょう。

画像をプッシュすると、これらのレイヤーはレジストリ (デフォルトでは docker hub レジストリ。別のレジストリ接頭辞でタグ付けされていない限り) に送信され、そこに保存されます。プル時に、レイヤー ID はそのレイヤーがすでにローカルにあるのか、それともダウンロードが必要なのかをチェックするために使われます。レイヤー ID は docker history を使えば、どのレイヤー(他の画像)が使われているか(そしてある程度は、どのコマンドがそのレイヤーを作成したかも)覗き見ることができます。

docker hub のレジストリにプッシュせずにイメージを共有する方法としては、以下のようなものがあります。

  • docker save 画像または docker export コンテナです。これは標準出力にtarファイルを出力するので、次のようなことをしたいでしょう。 docker save 'dockerizeit/agent' > dk.agent.latest.tar . 次に docker load または docker import を別のホストで実行します。

  • 自分専用のレジストリをホストする。- 時代遅れ、コメント参照 <ストライク をご覧ください。 ドッカーレジストリイメージ . を構築しました。 S3 バックアップレジストリ このバケツは必要に応じて起動したり停止したりすることができます(すべての状態は選択した s3 バケットに保存されます)。これはまた、レジストリにプッシュしたときに何が起こるかを見るための興味深い方法です。

  • のような別のレジストリを使用します。 quay.io (個人的には試していませんが)Docker Hubに関する懸念は、おそらくここでも適用されるでしょう。