Docker登录Artifactory-JCR成功却拉取镜像提示认证失败怎么办?
解决Docker拉取Artifactory-JCR镜像时的认证问题
从你给出的操作日志里,能定位到两个核心问题:拉取路径的格式错误,以及凭证存储的条目不匹配,咱们一步步来解决:
1. 修正镜像拉取路径
你的拉取命令里多写了一层/v2前缀,导致实际请求路径变成了/v2/v2/docker/jib-mvn(从报错信息Get http://124.70.180.84:8081/v2/v2/docker/jib-mvn/manifests/latest能明确看出来)。Docker客户端会自动在请求中添加/v2前缀,所以你只需要用Artifactory仓库的实际路径即可:
docker pull 124.70.180.84:8081/docker/jib-mvn
2. 修复凭证存储不匹配的问题
从docker logout的警告和pass的输出来看,密码存储里的条目是MTI0LjcwLjE5MC44NDoMDgx,但你的仓库地址是124.70.180.84:8081,这说明凭证存储的条目和实际仓库地址不匹配(大概率是之前登录时的地址输入误差,或者凭证助手的编码问题)。你可以按以下步骤重置凭证:
- 先手动删除pass里的错误条目:
pass rm docker-credential-helpers/MTI0LjcwLjE5MC44NDoMDgx/maple
- 然后重新登录,确保登录地址完全正确:
docker login 124.70.180.84:8081
- 登录后可以验证下pass里的条目是否和仓库地址匹配:执行
echo -n 124.70.180.84:8081 | base64,看输出是否和pass里的条目一致。
3. 额外检查:确保Artifactory与Docker配置匹配
如果上面两步还没解决问题,你需要确认以下配置:
- 确保用户
maple拥有该Docker仓库的拉取权限; - 确认Artifactory的Docker仓库采用
Repository Path模式(这种模式下拉取路径就是[Artifactory地址]/[仓库名]/[镜像名],和你的使用方式一致); - 检查Artifactory是否允许HTTP访问:如果你的Artifactory强制HTTPS,需要在Docker配置里把该地址设为不安全镜像仓库。操作方式是编辑
/etc/docker/daemon.json:
{ "insecure-registries": ["124.70.180.84:8081"] }
然后重启Docker服务:
systemctl daemon-reload systemctl restart docker
内容的提问来源于stack exchange,提问作者YellowMaple
相关产品推荐
相关产品推荐

