由於工作原因,我需要使用以下命令自行託管本機 docker 代理程式緩存港口。所以我找到了他們的文檔,安裝了伺服器並正確配置了它,透過 FQDN 存取它並使用自簽名憑證。我可以毫無問題地docker login
從外部客戶端使用。docker pull
我的想法是將此Harbor伺服器提供給容器d在我擁有的 k3s 叢集內運行的服務。從叢集的控制平面(主機名稱:control01)我可以擷取影像:
/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...
所以我配置/etc/rancher/k3s/registries.yaml
如下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
我嘗試過使用和不使用該config
部分,但它一直告訴我:
pulling from host harbor.virtalus.com failed with status code [manifests 1.8.6]: 401 Unauthorized
我在這上面花了最後 4 個小時,我閱讀了一些 github 問題線程、官方文件和一些故障排除指南,但我仍然不知道我做錯了什麼。
答案1
這些configs
條目包含auth
和tls
部分,但由於冗餘的錯誤放置的註冊表項,該部分似乎tls
並未被考慮在內
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
請隨意刪除它,並讓我知道這是否可以解決問題
此外,作為旁注,您可能需要使用 標誌--debug
來docker
獲取有關遇到的錯誤的更多詳細信息