【发布时间】:2020-03-12 20:11:01
【问题描述】:
我正在尝试从私有注册表中提取图像,并且我将身份验证存储在 kubernetes 集群节点的 /root/.docker/config.json 中。 我还验证了在拉取 docker 映像时身份验证是否按预期工作。
curl -v \
-X GET \
-H "Authorization: Bearer $(cat /tmp/auth_bearer.txt)" repo-url/manifests/latest \
-H "Accept: application/vnd.docker.distribution.manifest.v2+json"
回复:
< HTTP/1.1 200 OK < Date: Wed, 11 Mar 2020 23:27:09 GMT <
Content-Type: application/vnd.docker.distribution.manifest.v2+json <
Content-Length: 3455 < Connection: keep-alive < Vary: Origin <
opc-request-id: 772f679098749bb474d59161 < Docker-Content-Digest:
sha256:17dcbbf7c670d8894ddfefc2907c9f045bfc45e60954525635632abbf02910
< { "schemaVersion": 2, "mediaType":
"application/vnd.docker.distribution.manifest.v2+json", "config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"size": 9504,
"digest": "sha256:d59db4a22d6ba8f1d3b5d7c8f8f410688dee569a947bf242e6c3e3b708f634829"
}, "layers": [
{ [...]
从上面的回复中,很明显我在私人仓库位置有图像,并且身份验证是正确的。但是,当我尝试执行 docker pull <repo-url>/image-name:image-tag 时,出现此错误:
Trying to pull repository <repo-url>/image-name:image-tag ...
pull access denied for <repo-url>/image-name:image-tag, repository does not exist or may require 'docker login'
有人可以告诉我我在这里缺少什么吗? 为什么节点忽略存储在 /root/.docker/config.json 中的 docker 凭据?
【问题讨论】:
-
你为什么要这样做?为什么不应用部署 yaml 并将身份验证作为秘密传递?
-
我不想使用 imagePullSecrets,因为有一个外部服务在私有注册表中管理我的图像并每 20 分钟更新我的 .docker/config.json 中的 docker creds。
-
我认为它也不适用于 Kubelet,而且您不只是在使用
docker pull进行测试?因为那应该行得通。
标签: docker kubernetes