web-dev-qa-db-ja.com

Docker-Hubを使わずにDocker-Imageを共有する方法

Dockerの画像が私のローカルホストマシンのどこに正確に保存されているのでしょうか。 Docker-HubDockerfileを使わずに '本物の' Docker-Imageを使わずにDocker-Imageを共有できますか?そして、Docker-ImageをDocker-Hubに「プッシュ」したときに何が起きているのでしょうか。

212
yaquawa

Dockerイメージはファイルシステムレイヤとして保存されます。 Dockerfileの各コマンドはレイヤーを作成します。 (おそらくdocker commit経由で)いくつかの変更を加えた後にコマンドラインからdocker runを使ってレイヤーを作成することもできます。

これらのレイヤはデフォルトで/var/lib/dockerの下に格納されています。 (理論的には)そこからファイルを選択して別のdockerサーバーにインストールすることはできますが、おそらくDockerで使用されている内部表現を使用することはお勧めできません。

画像をプッシュすると、これらのレイヤーはレジストリ(デフォルトではdocker hubレジストリ)に送信され、そこに別のレジストリプレフィックスを付けてタグ付けされます。プッシュ時には、レイヤIDを使用して、すでにローカルにレイヤがあるかどうか、またはダウンロードする必要があるかどうかを確認します。 docker historyを使用して、どのレイヤー(他の画像)が使用されているか(そしてある程度までは、どのコマンドがレイヤーを作成したか)を調べることができます。

港湾労働者ハブのレジストリにプッシュせずに画像を共有するためのオプションに関しては、あなたの最良の選択肢は次のとおりです。

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

  • あなた自身のプライベートレジストリをホストします。 - 時代遅れ、コメントを参照 docker registry image を参照してください。セットアップが簡単な s3バックアップレジストリ 必要に応じて起動および停止が可能です(すべての状態はs3バケットに保持されます)。これは、レジストリにプッシュしたときに何が起こるかを見るのにも興味深い方法です。

  • Docker Hubに関する懸念があれば、ここでも当てはまりますが、 quay.io (私は個人的に試したことはありません)のような別のレジストリを使用します。

216
Abel Muiño

このブログ に基づいて、dockerレジストリなしでdockerイメージを共有することができます。

docker save --output latestversion-1.0.0.tar dockerregistry/latestversion:1.0.0

このコマンドが完了すると、イメージをサーバーにコピーして次のようにインポートできます。

docker load --input latestversion-1.0.0.tar
20
030

Docker Hub自体を使用したくない場合は、JFrogによるArtifactoryの下で独自のDockerリポジトリーをホストできます。

https://www.jfrog.com/confluence/display/RTF/Docker+Repositories

これはあなた自身のサーバーで実行されます。

CoreOSなど、他のホスティングサプライヤも利用できます。

http://www.theregister.co.uk/2014/10/30/coreos_enterprise_registry/

quay.ioを買った

6
MikeW

Dockerイメージをリモートサーバーに送信するには、3つの簡単な手順で行うことができます。

  1. ローカルに、dockerイメージを。tarとして保存します。docker save -o <path for created tar file> <image name>

  2. ローカルでは、scpを使用して。tarをリモートに転送します。

  3. リモートサーバーで、dockerに画像をロードします。docker load -i <path to docker image tar file>

1
JSON C11