使用docker-image-resource将场所未经授权的错误推送到Artifactory

时间:2019-07-13 04:46:52

标签: artifactory docker-registry concourse

我正在尝试使用Concourse从git存储库中获取dockerfile定义,进行一些工作,构建docker映像,并将新映像推送到Artifactory。请参阅下面的管道定义。目前,我处于artifactory阶段的所有阶段(推动Artifactory的阶段)。 artifactory阶段错误退出,显示以下输出:

waiting for docker to come up...
sha256:c6039bfb6ac572503c8d97f42b6a419b94139f37876ad331d03cb7c3e8811ff2
The push refers to repository [artifactory.server.com:2077/base/golang/alpine]
a4ab5bf94afd: Preparing
unauthorized: The client does not have permission to push to the repository.

这似乎是一个Artifactory权限问题,除非我已经在docker cli上进行了本地测试,并且能够使用destination_username和{{1}中指定的同一用户/密码来推送}。我仔细检查了凭据以确保我使用的是相同的凭据,并发现自己在使用该凭据。

问题#1 :是否还有其他已知原因导致此错误?我搜索了resource github page,但未发现任何内容。为什么我可能会遇到权限错误?

在没有上述问题的答案的情况下,我真的很想更深入地解决问题。为此,我使用destination_password在相应的容器中获取外壳。我注意到容器上安装了fly hijack,所以我认为下一步是在压缩包中为要尝试推送的图像执行docker,然后执行docker import将其推送到仓库。尝试运行导入时出现错误:

  

无法通过unix:///var/run/docker.sock连接到Docker守护程序。是   docker守护程序正在运行?

问题#2 :为什么我不能在容器内使用docker命令?也许这与我在运行管道时推动回购所遇到的问题有关(我不这么认为)?是因为容器没有特权运行吗?我以为资源类型定义中将提供docker push参数,但是如果没有,我该如何使用特权运行?

privileged

1 个答案:

答案 0 :(得分:0)

Arghhhh。经过大量故障排除后发现,destination_password由于特殊字符和引号不足而无法正确使用。通过正确设置包含在--load-vars标志中的yaml文件中的密码,解决了该问题。