docker registry-mirrors は fqdn イメージには使用されません

docker registry-mirrors は fqdn イメージには使用されません

ファイアウォールの背後に Docker サーバーがあるため、内部サーバー以外のレジストリから直接イメージを取得することはできません。

設定しましたレジストリミラー(registry-1.docker.ioおよびmcr.microsoft.comドキュメント

私のdaemon.json見た目は次のようになります:

{
  "registry-mirrors": [
          "https://registry_1_docker_io.example.com",
          "https://mcr_microsoft_com.example.com"
  ] 
}

次のように実行することで、Docker Hub からイメージを正常にプルできます。

$ docker pull nginx:1
1: Pulling from library/nginx
....
Status: Downloaded newer image for nginx:1

私の問題はMicrosoftレジストリから画像を取得できません:

# docker pull mcr.microsoft.com/mssql/server:2017-latest
Error response from daemon: Get "https://mcr.microsoft.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

docker は直接接続しようとmcrし、ミラーを無視します。mssql/server:2017-latestの代わりに短いイメージ名を使用するとmcr.microsoft.com/mssql/server:2017-latest機能しますが、タグが両方で同じである場合は、Microsoft の mcr ではなく docker hub からイメージを取得する可能性があります。

さらに、ログを見ると、docker はイメージのすべてのプロキシを順番に試行するため、イメージが間違ったリポジトリから取得される状況が発生する可能性があります。

ミラーを特定のレジストリのミラーとしてマークする方法はありますか?

答え1

ミラーを特定のレジストリのミラーとしてマークする方法はありますか?

いいえ、これはDockerエンジンの制限であり、registry-mirrorsDocker Hubにのみ適用されます。問題 18818詳細については。

近い将来、docker がイメージ処理を docker から containerd にスワップアウトすると、containerd はミラーを処理するための異なる構成を持つため、この状況は変わる可能性があります。

関連情報