Harbor をプルスルーレジストリキャッシュとして使用する `registry-mirrors`

Harbor をプルスルーレジストリキャッシュとして使用する `registry-mirrors`

Harbor を Docker hub にリンクされたプルスルー レジストリとして構成しようとしています。

私は画像にプレフィックスを付けることで画像を取得していますが医師によると、Docker デーモン パラメータを使用しても動作させることができませんregistry-mirrors。などのコマンドは、docker pull mysql引き続き docker.io からレイヤーをダウンロードします。

クライアント設定

Dockerバージョン: 20.10.8

ログファイル:

{
  "registry-mirrors": ["https://harbor.example.com"]
}

港湾構成

  • ハーバー v2.3.1
  • インストール方法docker-compose
  • Harbor インターフェースの場合:
    • レジストリ \ 新しいエンドポイント: プロバイダーとして「Docker Hub」を使用してエンドポイントを作成しました。
    • プロジェクト\新規プロジェクト: 名前を に設定しproxy、「プロキシ キャッシュ」にチェックを入れ、上記のエンドポイントを選択しました。

テスト 1: プレフィックス付きのイメージをプルします。

$ docker pull harbor.example.com/proxy/library/mysql
Using default tag: latest
latest: Pulling from proxy/library/mysql
33847f680f63: Already exists 
5cb67864e624: Already exists 
1a2b594783f5: Already exists 
b30e406dd925: Already exists 
48901e306e4c: Already exists 
603d2b7147fd: Already exists 
802aa684c1c4: Already exists 
715d3c143a06: Pull complete 
6978e1b7a511: Pull complete 
f0d78b0ac1be: Pull complete 
35a94d251ed1: Pull complete 
36f75719b1a9: Pull complete 
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for harbor.example.com/proxy/library/mysql:latest
harbor.example.com/proxy/library/mysql:latest

最後から 2 番目の行は、これが予想どおりにリポジトリからプルされたことを示しています。

テスト 2: プレフィックスなしでイメージをプルする:

$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
33847f680f63: Already exists 
5cb67864e624: Already exists 
1a2b594783f5: Already exists 
b30e406dd925: Already exists 
48901e306e4c: Already exists 
603d2b7147fd: Already exists 
802aa684c1c4: Already exists 
715d3c143a06: Pull complete 
6978e1b7a511: Pull complete 
f0d78b0ac1be: Pull complete 
35a94d251ed1: Pull complete 
36f75719b1a9: Pull complete 
Digest: sha256:8b928a5117cf5c2238c7a09cd28c2e801ac98f91c3f8203a8938ae51f14700fd
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

これは、レジストリから取得するのではなく、docker.io から取得されます。上記のコマンドの後、/var/log/syslog に次の行も表示されます。

Aug 11 15:54:57 myhost dockerd[12663]: time="2021-08-11T15:54:57.229516951+02:00" level=info msg="Attempting next endpoint for pull after error: unknown: repository library/mysql not found"

これは Docker が最初にレジストリを試したことを示しているので、問題は Docker ではなくレジストリの構成にあると思われます。おそらく Harbor が使用するパス規則にあるのでしょう...

手動でプレフィックスを付けずに Harbor キャッシュから画像を取得できた人はいますか?

関連情報