【问题标题】:Jenkins : cannot exectute docker commands from jenkins詹金斯:无法从詹金斯执行码头命令
【发布时间】:2020-04-12 09:22:10
【问题描述】:

我无法从 jenkins 执行任何 docker 命令并收到以下错误,

+ sudo docker pull ubuntu
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/library/ubuntu/manifests/latest: unauthorized: incorrect username or password
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我尝试过的事情

1 ) jenkins 用户是 Jenkins master 上 docker 组的成员

ubuntu@ip-10-20-10-106:/tmp$ groups jenkins
   jenkins : jenkins sudo docker

2) 泊坞窗版本

ubuntu@ip-10-20-10-106:/tmp$ docker --version
Docker version 19.03.6, build 369ce74a3c

如何解决这个问题?

【问题讨论】:

  • 从错误中,似乎 docker 注册表需要身份验证。你这样做吗?
  • 如何检查.. 我可以在没有 sudo 访问权限的情况下运行 docker 命令
  • 您的意思是您可以从 docker 注册表中提取图像?如果是,则在您的主目录下,检查名称为 .docker 的隐藏目录。如果您的 docker 注册表需要身份验证,那么 .docker 目录中将有一个文件,其中包含凭据。当您运行docker login 并提供您的凭证时,它会在您的主目录中创建此目录结构。 Jenkins 也需要采取类似措施。
  • 我给 jenkins 用户 sudo 访问权限.. 够了吗
  • sudo 访问实际上不是必需的。如果您将运行ps -ef | grep -i jenkins,您将找到运行Jenkins 进程的id。一旦你知道了,只需切换到该用户,然后运行docker login 命令。这将在该用户的主目录中创建必要的目录结构。然后你可以尝试运行 Jenkins 作业。

标签: docker jenkins jenkins-docker


【解决方案1】:

从错误来看,docker 注册表似乎需要身份验证。如果它在命令行中为您工作,并且在您切换到主机箱上的 Jenkins 用户时不起作用,那么这意味着 Jenkins 在连接到 docker 注册表时需要对自己进行身份验证。只需 sudo 给 Jenkins 用户,然后运行 ​​docker login 命令。成功验证后,您应该可以开始了。

【讨论】:

    最近更新 更多