User Tools

Site Tools


k8s:services:docker_hub_local_mirror

Docker Hub local mirror

Since docker.com has limited access to container images there it is necessary to mirror container images locally and pull them with an account for more than personal use of a few images. That is especially true for maintaining or restoring a K8s cluster as this will exhaust the free contingent fast.

Using a storage node

This has the benefit of using the 10GB link, for example 10.3.6.58:

Config file /etc/docker/registry/config.yaml

version: 0.1
http:
  secret: <some string>
  addr: 0.0.0.0:5000
  debug:
    addr: :5001
    prometheus:
      enabled: false
      path: /metrics
  headers:
    X-Content-Type-Options:
    - nosniff
proxy:
  remoteurl: https://registry-1.docker.io
  username: <docker hub account>
  password: <access token>
health:
  storagedriver:
    enabled: true
    interval: 10s
    threshold: 3
log:
  fields:
    service: registry
storage:
  filesystem:
    rootdirectory: /var/lib/registry
  cache:
    blobdescriptor: inmemory
  delete:
    enabled: true

Launch:

sudo podman run -d -p 10.6.16.58:5000:5000 \
 -v /var/lib/registry:/var/lib/registry \
 -v /etc/docker/registry/config.yml:/etc/docker/registry/config.yml \
 --name docker-registry-proxy \
 --log-driver journald registry:2.8

Restart with systemd (/etc/systemd/system/docker-registry-proxy.service):

[Unit]
Description=DockerHub Registry Proxy Server
 
[Service]
Restart=on-failure
ExecStart=/usr/bin/podman start -a docker-registry-proxy
ExecStop=/usr/bin/podman stop -t 10 docker-registry-proxy
 
[Install]
WantedBy=multi-user.target
k8s/services/docker_hub_local_mirror.txt · Last modified: by admin