首页 文章

使用Docker Jenkins容器管道构建docker镜像时找不到Docker

提问于
浏览
13

我有一个Jenkins作为docker容器运行,现在我想使用管道构建一个Docker镜像,但Jenkins容器总是告诉Docker找不到 .

[simple-tdd-pipeline] Running shell script
+ docker build -t simple-tdd .
/var/jenkins_home/workspace/simple-tdd-pipeline@tmp/durable-
ebc35179/script.sh: 2: /var/jenkins_home/workspace/simple-tdd-
pipeline@tmp/durable-ebc35179/script.sh: docker: not found

以下是我运行Jenkins图像的方法:

docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v 
/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock 
jenkins

而Jenkins图像的DockerFile是:https://github.com/jenkinsci/docker/blob/9f29488b77c2005bbbc5c936d47e697689f8ef6e/Dockerfile

3 回答

  • 12

    你错过了docker客户端 . 在Dockerfile中安装它:

    RUN curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz \
      && tar xzvf docker-17.04.0-ce.tgz \
      && mv docker/docker /usr/local/bin \
      && rm -r docker docker-17.04.0-ce.tgz
    

    Source

  • 7

    Edit: May 2018

    正如Guillaume Husta所指出的那样,jpetazzo's blog article不鼓励这种技术:

    此帖子的旧版本建议将docker二进制文件从主机绑定到容器 . 这不再可靠,因为Docker Engine不再作为(几乎)静态库分发 .

    Docker客户端应安装在容器内,如here所述 . 此外, jenkins 用户应该在 docker 组中,因此执行以下命令:

    $ docker exec -it -u root my-jenkins /bin/bash
    # usermod -aG docker jenkins
    

    最后重启 my-jenkins 容器 .

    Original answer:

    您可以在此@Adrian Mouat博客article中使用主机的 docker engine .

    docker run -d \
       --name my-jenkins \
       -v /var/jenkins_home:~/.jenkins \
       -v /var/run/docker.sock:/var/run/docker.sock \
       -p 8080:8080 jenkins
    

    这避免了在主机和jenkins容器上有多个docker引擎版本 .

  • 3

    在你的Jenkins界面中转到"Manage Jenkins/Global Tool Configuration"

    然后向下滚动到Docker Installations并单击"Add Docker" . 给它一个像"myDocker"这样的名字

    请务必选中"Install automatically"框 . 单击"Add Installer"并选择"Download from docker.com" . 在Docker版本中保留"latest" . 确保单击“保存” .

    enter image description here

    在Jenkinsfile中,在运行任何docker命令之前添加以下阶段:

    stage('Initialize'){
            def dockerHome = tool 'myDocker'
            env.PATH = "${dockerHome}/bin:${env.PATH}"
        }
    

相关问题