Aus beruflichen Gründen muss ich einen lokalen Docker-Proxy-Cache selbst hosten.Hafen. Also ging ich zu deren Dokumentation und installierte den Server und konfigurierte ihn richtig, indem ich über FQDN darauf zugriff und ein selbstsigniertes Zertifikat verwendete. Ich kann ihn docker login
von externen Clients aus docker pull
problemlos verwenden.
Meine Idee ist, diesen Harbor-Server bereitzustellen fürContainerdDienst, der in einem K3S-Cluster ausgeführt wird, den ich habe. Von der Kontrollebene des Clusters (Hostname: control01) kann ich Bilder abrufen:
/usr/local/bin/ctr -a /run/k3s/containerd/containerd.sock image pull
harbor.virtalus.com/dockerhubproxy/library/ubuntu:20.04
harbor.virtalus.com/dockerhubproxy/library/ubuntu:20.04: resolved |++++++++++++++++++++++++++++++++++++++|
index-sha256:4e9ed8dc49c4c21888f4053e59d7ef0959f57e77d0fbe47ba0063fddd6b70f2c: done |++++++++++++++++++++++++++++++++++++++|
manifest-sha256:7b3e30a1f373b0621681f13b92feb928129c1c38977481ee788a793fcae64fb9: exists |++++++++++++++++++++++++++++++++++++++|
layer-sha256:8e5c1b329fe39c318c0d49821b339fb94a215c5dc0a2898c8030b5a4d091bcba: exists |++++++++++++++++++++++++++++++++++++++|
config-sha256:1a437e363abfa47bfe4b3f5906b7444d12346102d944ebddd537e47a62fc6f52: exists |++++++++++++++++++++++++++++++++++++++|
elapsed: 10.3s total: 1.4 Ki (137.0 B/s)
unpacking linux/amd64 sha256:4e9ed8dc49c4c21888f4053e59d7ef0959f57e77d0fbe47ba0063fddd6b70f2c...
Ich konfiguriere das /etc/rancher/k3s/registries.yaml
also wie folgt:offizielles Dokument von Rancher:
cat << EOF > /etc/rancher/k3s/registries.yaml
mirrors:
"*":
endpoint:
- "https://harbor.virtalus.com"
configs:
"https://harbor.virtalus.com":
auth:
username: admin
password: Harbor12345
tls:
cert_file: /root/harbor.virtalus.com.cert
key_file: /root/harbor.virtalus.com.key
ca_file: /root/ca.crt
insecure_skip_verify: true
EOF
Ich habe es mit und ohne diesen config
Abschnitt versucht, aber es wird mir immer Folgendes angezeigt:
pulling from host harbor.virtalus.com failed with status code [manifests 1.8.6]: 401 Unauthorized
Ich habe die letzten 4 Stunden damit verbracht, einige Threads zu GitHub-Problemen, das offizielle Dokument und mehrere Anleitungen zur Fehlerbehebung gelesen, weiß aber immer noch nicht, was ich falsch mache.
Antwort1
Die configs
Einträge enthalten die Abschnitte auth
und tls
, aber es scheint, dass der tls
Abschnitt aufgrund eines redundanten, falsch platzierten Registrierungseintrags nicht berücksichtigt wird
cat << EOF > /etc/rancher/k3s/registries.yaml
mirrors:
"*":
endpoint:
- "https://harbor.virtalus.com"
configs:
"https://harbor.virtalus.com":
auth:
username: admin
password: Harbor12345
"https://harbor.virtalus.com":
tls:
cert_file: /root/harbor.virtalus.com.cert
key_file: /root/harbor.virtalus.com.key
ca_file: /root/ca.crt
insecure_skip_verify: true
EOF
Entfernen Sie es einfach und lassen Sie mich wissen, ob das Problem dadurch behoben wird.
Zusätzlich können Sie als Randbemerkung das --debug
Flag von verwenden docker
, um weitere Details über den aufgetretenen Fehler zu erhalten.