回答:
Dockerイメージはファイルシステムレイヤーとして保存されます。Dockerfileのすべてのコマンドでレイヤーが作成されます。docker commit
(docker run
おそらく)いくつかの変更を行った後、コマンドラインからを使用してレイヤーを作成することもできます。
これらのレイヤーは、デフォルトでに保存されます/var/lib/docker
。(理論的には)そこからファイルを選択して別のDockerサーバーにインストールすることもできますが、Dockerで使用される内部表現を試すのはおそらくお勧めできません。
画像をプッシュすると、これらのレイヤーはレジストリ(デフォルトではDockerハブレジストリ、別のレジストリプレフィックスで画像にタグを付けない限り)に送信され、そこに保存されます。プッシュするとき、レイヤーIDを使用して、既にレイヤーがローカルにあるかどうか、またはダウンロードする必要があるかどうかを確認します。を使用docker history
して、どのレイヤー(他の画像)が使用されているか(ある程度、どのコマンドがレイヤーを作成したか)を調べることができます。
Dockerハブレジストリにプッシュせずに画像を共有するためのオプションとして、最適なオプションは次のとおりです。
docker save
画像またはdocker export
コンテナ。これはtarファイルを標準出力に出力するので、のようなことをしたいでしょうdocker save 'dockerizeit/agent' > dk.agent.latest.tar
。次に、docker load
またはdocker import
別のホストで使用できます。
独自のプライベートレジストリをホストします。- 古くなりました、コメント を参照してくださいdockerレジストリ画像を参照してください。必要に応じて開始および停止できるs3ベースのレジストリを構築しました(すべての状態は選択したs3バケットに保持されます)。これはセットアップが簡単です。これは、レジストリにプッシュしたときに何が起こるかを監視する興味深い方法でもあります
quay.io(私は個人的には試していません)などの別のレジストリを使用します。ただし、Dockerハブに関する懸念はすべてここでも当てはまります。
docker save
:別の画像から派生した画像(たとえば、と言いますpython:2.7
)をレジストリにプッシュするとき、変更されない限り、親画像を複数回アップロードする必要はありません。部分的な画像を保存して、同様のファイルサイズの最適化を実現できますか?私はこれらのフープを飛び越えています。私は複数の画像を持つ趣味家であり、プライベートレジストリの料金を支払いたくないからです。
docker build
、ホスト上でsrcファイルをプルすることはできませんか?
npm install
...メモリが非常に少ないためホストでビルドできず、このステップは常に失敗します(github.com/npm/npm/issues/5021を参照)
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を買った