Docker容器作为jenkins的构建从站

pcww981p  于 12个月前  发布在  Docker
关注(0)|答案(2)|浏览(132)

我已经在同一台机器上安装了Jenkins和Docker Ubuntu。

  • Ubuntu 17.10
  • Jenkins版本2.73.3
  • Docker版本17.09.0-ce。

我正在尝试将jenkin docker容器设置为运行自动化测试套件的从属容器。
我能够正确地在Jenkins中设置Docker插件来启动Docker容器,并添加了一个Docker模板,其中包含我为设置Docker环境而创建的图像。
该镜像构建在Ubuntu托管的Docker上。
现在的问题是,当我从Jenkins运行一个作业时,它会给出一个错误消息(待定-Jenkins没有docker-slave标签)
Jenkins pending image
当我在Ubuntu机器中检查Jenkins日志时,我看到以下错误消息

com.github.dockerjava.api.exception.NotFoundException: {"message":"pull access 
denied, "message":may require 'docker login'"}

字符串
在ubuntu机器上,我已经完成了docker登录。
我试图构建容器的镜像是在ubuntu本地的,没有推送到任何存储库,那么为什么要尝试拉取镜像呢?
另外,我需要解决的权限问题是什么?当从jenkins构建一个作业时,jenkins用户正在构建容器。我需要在那里添加其他东西吗?

ma8fv8wu

ma8fv8wu1#

在Jenkinsfile中,您可以使用credentials plugin的凭据:

// Login to registry
    withCredentials([usernamePassword(credentialsId: 'YOUR_ID_AD_DEFINED_IN_JENKINS', passwordVariable: 'PASS', usernameVariable: 'USER')]) {
        sh "docker login --username=$USER --password=$PASS your.registry.here.com"
    }

    // Build with correct pom version
    sh "docker build -t your.registry.here.com/your_image_here/your_image_name:${POM_VERSION} ."

    // Push
    sh "docker push your.registry.here.com/your_image_here/your_image_name:${POM_VERSION}"

    //pull
    sh "docker pull your.registry.here.com/your_image_here/your_image_name:${POM_VERSION}"

字符串
${POM_VERSION}只是从我自己的代码中截取的,当然可以是任何你喜欢的版本。
您还需要在Jenkins服务器中定义凭据。可以在这里找到描述Working with jenkins credentials

b5buobof

b5buobof2#

检查你的docker模板配置,选择“Never pool”作为“pool strategy”。

相关问题