【问题标题】:Docker pull command fails when launched in Jenkins在 Jenkins 中启动 Docker pull 命令失败
【发布时间】:2020-05-03 12:28:06
【问题描述】:

我正在编写一个 Jenkins 管道,旨在从私有注册表中提取 docker 映像。目前我在启动 docker pull 命令时遇到问题,因为从 Jenkins 启动时它会失败。

目前,Jenkins 管道的工作方式如下:

  • 从用户那里获取一组参数(即:图像名称和标签)
  • 启动一个单独的 bash 脚本来执行拉取操作。

bash 脚本执行两个操作:

  • 通过以下方式登录注册表:echo $pwd | docker login -u$username --password-stdin $registryUrl

  • 通过命令拉取图片:docker pull $image:$tag

登录命令成功,而拉取命令回复:

Error response from daemon: access denied:
no access to Image Load, on collection swarm

乍一看,我认为这是用户权限的问题,但是在 Jenkins 上下文之外运行 bash 脚本(作为 jenkins 进程的所有者)它可以工作。

我是否缺少任何配置?作为替代方案,我尝试使用 Docker Jenkins 插件 API 实现 Jenkins 管道,但也失败了。

最后说明
Jenkins 进程的所有者与登录 Docker 私有注册表的用户不同。这会影响行为吗?


操作系统

macOS 10.14.6

Docker 版本详情

Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf5
  Built:            Thu Oct 17 23:50:38 2019
  OS/Arch:          linux/amd64

【问题讨论】:

    标签: bash docker jenkins jenkins-pipeline


    【解决方案1】:

    管道有自己的命令和技巧来登录dockerhub。例如,

    docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-creds') {
        docker.image('myteam/secretimage:latest').inside() {
            checkout scm
            sh './configure && make && make test'
        }
    }
    

    这里,dockerhub-creds您应该在 Jenkins 本身中创建的凭据

    这种技术比回显密码更好,因为:

    1. 密码将隐藏在构建的标准输出中,并且对其他无权访问凭据的用户隐藏

    2. 密码在用户、构建节点、docker 容器等之间神奇地镜像,您不会遇到“执行上下文不同,没有任何作用”的情况

    【讨论】:

    • 感谢您的回复。唉,即使使用docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-creds') 我也可以登录到注册表,但是 pull 命令仍然失败,如上所述。
    • 请详细说明。操作系统,你使用 selinux/apparmor,你使用构建节点等等。您的问题看起来很特别,我粘贴的代码在我的生产中有效 =)
    猜你喜欢
    • 2017-07-22
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2021-06-15
    • 2015-04-06
    相关资源
    最近更新 更多