2 つの Docker コンテナを作成しました。最初のコンテナはプライベート Docker レジストリを提供し、2 番目のコンテナは公式 Docker レジストリのミラーです。
docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry
docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry
両方を組み合わせたいと思います。ユーザーが引っ張るイメージはまずプライベートレジストリを照会し、次にミラーを照会します。そしてイメージが押したプライベートレジストリにのみプッシュする必要があります。
どうすればこれが実現できるか分かりません。 ご協力いただければ幸いです。
ベストアンサー1
すべてを強制することはできないドッカープッシュプライベート レジストリにプッシュするコマンドです。 理由の 1 つは、これらのレジスタをいくつでも持つことができることです。 まず、イメージにタグを付けて、プッシュする場所を docker に伝える必要があります (下記参照)。
実行中のプライベート レジストリとローカル ミラーで動作するように Docker ホストを設定する方法は次のとおりです。
クライアントのセットアップ
ミラーレジストリとプライベートレジストリの両方を(解決可能な)ホストで実行していると仮定します。ドッカーストアミラーはポート 5555、レジストリは 5000 です。
その後クライアントマシンの場合は、docker デーモンの起動に追加のオプションを渡す必要があります。あなたの場合:
--registry-mirror=http://dockerstore:5555
デーモンに、dockerhub ではなくローカルミラーを優先して使用するように指示するために追加します。ソース--insecure-registry dockerstore:5000
追加の設定なしでプライベートレジストリにアクセスするには、以下を追加します。この答え- dockerデーモンを再起動する
鏡を使う
イメージをプルすると、最初のソースはローカルミラーになります。docker pull を実行することで確認できます。例:
docker pull debian
出力には、イメージがミラーからプルされているというメッセージが表示されます - dockerstore:5000
ローカルレジストリの使用
押し進めるためにプライベートレジストリに最初に画像にタグを付けるレジストリの完全な名前でプッシュされます。タグの最初の部分、イメージをプライベート レジストリにプッシュする必要があることを Docker に伝えます。
Docker は、「.」(ドメイン区切り文字)または「:」(ポート区切り文字)のいずれかを探して、リポジトリ名の最初の部分がユーザー名ではなく場所であることを認識します。
例:
30d39e59ffe2 画像をタグ付けdockerstore:5000/myapp:安定版
docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable
プライベートレジストリにプッシュする
docker push dockerstore:5000/myapp:stable
そうすれば、引っ張ることもできます
docker pull dockerstore:5000/myapp:stable