`registry-mirrors` mit Harbor als Pull-Through-Registry-Cache

`registry-mirrors` mit Harbor als Pull-Through-Registry-Cache

Ich versuche, Harbor als Pull-Through-Register zu konfigurieren, das mit dem Docker-Hub verknüpft ist.

Während ich es schaffe, Bilder durch Präfixierung zu ziehenlaut Dokument, ich kann es nicht zum Laufen bringen, indem ich den registry-mirrorsDocker-Daemon-Parameter verwende: Befehle wie docker pull mysqlladen die Ebenen immer noch von docker.io herunter.

Client-Konfiguration

Docker-Version: 20.10.8

/etc/docker/daemon.log:

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

Hafenkonfiguration

  • Hafen v2.3.1
  • Installiert mitdocker-compose
  • In der Harbor-Schnittstelle:
    • Registrierungen \ Neuer Endpunkt: Endpunkt mit „Docker Hub“ als Anbieter erstellt.
    • Projekte \ Neues Projekt: Name auf festlegen proxy, „Proxy-Cache“ aktivieren und den obigen Endpunkt auswählen.

Test 1: Bild mit Präfix abrufen:

$ 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

Die vorletzte Zeile zeigt, dass dies wie erwartet aus meinem Repo gezogen wird.

Test 2: Bild ohne Präfix ziehen:

$ 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

Dies kommt von docker.io, anstatt es aus meiner Registry zu nehmen! Nach dem obigen Befehl sehe ich auch diese Zeile in /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"

Da dies darauf hindeutet, dass Docker zuerst meine Registrierung ausprobiert hat, vermute ich, dass das Problem in der Konfiguration der Registrierung und nicht in Docker liegt. Vielleicht in den von Harbor verwendeten Pfadkonventionen ...

Hat es jemand geschafft, Bilder aus einem Harbor-Cache abzurufen, ohne sie manuell mit einem Präfix versehen zu müssen?

verwandte Informationen