`registry-mirrors` com Harbour como cache de registro pull-through

`registry-mirrors` com Harbour como cache de registro pull-through

Estou tentando configurar o Harbour como um registro pull-through vinculado ao hub Docker.

Enquanto eu consigo extrair imagens prefixando-asde acordo com o documento, não consigo fazer funcionar usando o registry-mirrorsparâmetro daemon do Docker: comandos como docker pull mysqlainda baixar as camadas do docker.io.

Configuração do cliente

Versão do Docker: 20.10.8

/etc/docker/daemon.log:

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

Configuração do porto

  • Porto v2.3.1
  • Instalado usandodocker-compose
  • Na interface do Porto:
    • Registros \ Novo endpoint: endpoint criado com "Docker Hub" como provedor.
    • Projetos \ Novo projeto: Defina o nome como proxy, marque "Proxy Cache" e selecione o endpoint acima.

Teste 1: Extraia imagem com prefixo:

$ 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

A penúltima linha mostra que isso foi retirado do meu repositório conforme esperado.

Teste 2: Extraia imagem sem prefixo:

$ 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

Isso vem do docker.io em vez de retirá-lo do meu registro! Após o comando acima, também vejo esta linha em /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"

Como isso sugere que o Docker tentou primeiro meu registro, suspeito que o problema esteja na configuração do registro e não no Docker. Talvez nas convenções de caminho usadas por Harbor...

Alguém conseguiu extrair imagens de um cache do Harbour sem precisar prefixá-las manualmente?

informação relacionada