on a un serveur qui servira de proxy. et un 2e serveur qui va s'y connecter pour appeller le dockerhub.
PS: si le mirroir souhaite etre protégé par basic auth ça ne marchera pas.
mettre ça dans /etc/docker/daemon.json
"registry-mirrors": [ "https://registrymirror.raphaelpiccolo.com" ]
systemctl restart docker
docker info doit l'afficher
sur le 1er serveur on tape ça pour avoir le fichier de config
docker run --rm registry:2 cat /etc/docker/registry/config.yml
on y ajoute ça :
proxy: remoteurl: https://registry-1.docker.io
mettre ce compose :
registrymirror: restart: always container_name: registrymirror image: registry:2 volumes: - ./registrymirror/config.yml:/etc/docker/registry/config.yml labels: - traefik.enable=true - traefik.http.routers.registrymirror.rule=Host(`registrymirror.${DOMAIN}`) - traefik.http.services.registrymirror.loadbalancer.server.port=5000 - traefik.http.routers.registrymirror.tls.certresolver=wildcardle - traefik.http.routers.registrymirror.entrypoints=websecure - traefik.http.routers.registrymirror.middlewares=compressor,securityheaders
booter le service & vérifier que tout va bien
docker compose up -d docker logs -f registrymirror
curl https://admin:xxx@registrymirror.raphaelpiccolo.com/v2/_catalog
on voit qu'il n'y a rien
Puis on tente de pull depuis l'autre serveur
docker pull ubuntu # pull manuel docker pull registrymirror.raphaelpiccolo.com/library/ubuntu
si on relance le curl on voit ubuntu
et on voit le crédit est consomé au niveau du proxy
TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" 2>/dev/null | jq -r .token) ; curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest 2>&1 | grep -i RateLimit
journalctl -u docker.service --since "10 min ago" -x -f