Résoudre l'indisponibilité du registre Docker hub.docker.com

Cet article propose des solutions pour contourner l'indisponibilité de hub.docker.com, en utilisant un miroir personnel, en expliquant les causes du problème, et en configurant des accélérateurs d'images.

1. Miroir personnel de hub.docker.com

Un miroir personnel est accessible à l'adresse suivante (limité à 100 000 requêtes par jour, gratuit tant qu'il n'est pas bloqué) :

hub.axlinux.top

Ce miroir est rapide et ne nécessite pas de VPN. Il permet de rechercher des images et de consulter les versions.

2. Pourquoi hub.docker.com est-il inaccessible ?

L'indisponibilité récente de Docker Hub est due à une pollution DNS, et non à un blocage direct. Même en spécifiant manuellement les adresses IP via le fichier hosts, la connexion échoue car les IP réelles sont inaccessibles.

2.1 Adresses IP réelles de Docker Hub

3.228.146.75
18.210.197.188
18.206.20.10

2.2 Test ping

Tous les paquets sont perdus :

[root@waluna ~]# ping -c1 3.228.146.75
PING 3.228.146.75 (3.228.146.75) 56(84) bytes of data.

--- 3.228.146.75 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[root@waluna ~]# ping -c1 18.210.197.188
PING 18.210.197.188 (18.210.197.188) 56(84) bytes of data.

--- 18.210.197.188 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

[root@waluna ~]# ping -c1 18.206.20.10
PING 18.206.20.10 (18.206.20.10) 56(84) bytes of data.

--- 18.206.20.10 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

3. Accélération des images Docker

3.1 Utiliser un accélérateur chinois

Quelques miroirs chinois courants :

  • USTC : https://docker.mirrors.ustc.edu.cn
  • Netease : http://hub-mirror.c.163.com
  • Alibaba Cloud : https://<votre_id>.mirror.aliyuncs.com
3.1.1 Configuration Docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://votre_miroir"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Exemple avec un miroir Alibaba Cloud :

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://eph8xfli.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Documentation officielle Alibaba : https://help.aliyun.com/document_detail/60750.html

3.1.2 Configuration de containerd (inclut Kubernetes)
vim /etc/containerd/config.toml
# Ajoutez ou modifiez les sections suivantes :

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
  endpoint = ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
  endpoint = ["https://gcr.mirrors.ustc.edu.cn"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
  endpoint = ["https://gcr.mirrors.ustc.edu.cn/google-containers/"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
  endpoint = ["https://quay.mirrors.ustc.edu.cn"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"]
  endpoint = ["https://ghcr.dockerproxy.com"]

3.2 Utiliser un registre personnel d'images

Un registre personnel hébergé sur Alibaba Cloud contient principalement des images liées à Kubernetes. Il est synchronisé quotidiennement et propose plus de 80 dépôts.

3.2.1 Liste partielle des dépôts disponibles
docker.elastic.co:
  - elasticsearch/elasticsearch
  - kibana/kibana
  - logstash/logstash
  - beats/filebeat
  - beats/heartbeat
  - beats/packetbeat
  - beats/auditbeat
  - beats/journalbeat
  - beats/metricbeat
  - apm/apm-server
  - app-search/app-search
quay.io:
  - coreos/flannel
  - ceph/ceph
  - cephcsi/cephcsi
  - csiaddons/k8s-sidecar
  - csiaddons/volumereplication-operator
  - prometheus/prometheus
  - prometheus/alertmanager
  - prometheus/pushgateway
  - prometheus/blackbox-exporter
  - prometheus/node-exporter
  - prometheus-operator/prometheus-config-reloader
  - prometheus-operator/prometheus-operator
  - brancz/kube-rbac-proxy
  - cilium/cilium
  - cilium/operator-generic
  - thanos/thanos
  - cilium/certgen
  - cilium/hubble-relay
  - cilium/hubble-ui-backend
  - cilium/hubble-ui
  - cilium/cilium-etcd-operator
  - cilium/operator
  - cilium/startup-script
  - cilium/clustermesh-apiserver
  - coreos/etcd
  - metallb/speaker
  - frrouting/frr
  - goharbor/nginx-photon
  - goharbor/harbor-portal
  - goharbor/harbor-core
  - goharbor/harbor-jobservice
  - goharbor/registry-photon
  - goharbor/harbor-registryctl
  - goharbor/chartmuseum-photon
  - goharbor/trivy-adapter-photon
  - goharbor/notary-server-photon
  - goharbor/notary-signer-photon
  - goharbor/harbor-db
  - goharbor/redis-photon
  - goharbor/harbor-exporter
k8s.gcr.io:
  - dns/k8s-dns-node-cache
  - metrics-server/metrics-server
  - kube-state-metrics/kube-state-metrics
  - prometheus-adapter/prometheus-adapter
  - sig-storage/nfs-subdir-external-provisioner
  - sig-storage/csi-node-driver-registrar
  - sig-storage/csi-provisioner
  - sig-storage/csi-resizer
  - sig-storage/csi-snapshotter
  - sig-storage/csi-attacher
  - sig-storage/nfsplugin
registry.k8s.io:
  - pause
  - etcd
  - conformance
  - kube-proxy
  - kube-apiserver
  - kube-scheduler
  - kube-controller-manager
  - coredns/coredns
  - ingress-nginx/controller
  - ingress-nginx/opentelemetry
  - ingress-nginx/controller-chroot
  - ingress-nginx/kube-webhook-certgen
  - defaultbackend-amd64
  - cpa/cluster-proportional-autoscaler
  - autoscaling/addon-resizer
gcr.io:
  - kaniko-project/executor
  - google-samples/xtrabackup
  - kubebuilder/kube-rbac-proxy
docker.io:
  - calico/node
  - calico/typha
  - calico/cni
  - calico/node
  - calico/kube-controllers
  - calico/pod2daemon-flexvol
  - kubesphere/openelb
  - aledbf/kube-keepalived-vip
3.2.2 Utilisation

Remplacze le registre d'origine par le registre personnel. Exemple :

docker.elastic.co/kibana/{image_name}  →  registry.cn-hangzhou.aliyuncs.com/waluna/{image_name}
quay.io/csiaddons/{image_name}         →  registry.cn-hangzhou.aliyuncs.com/waluna/{image_name}
k8s.gcr.io/{image_name}                →  registry.cn-hangzhou.aliyuncs.com/waluna/{image_name}
3.2.3 Télécharger une image
docker pull registry.cn-hangzhou.aliyuncs.com/waluna/kube-scheduler:[version]
crictl pull registry.cn-hangzhou.aliyuncs.com/waluna/kube-scheduler:[version]

Étiquettes: Docker Hub DNS containerd kubernetes

Publié le 6 juillet à 03h42