繁体   English   中英

如何在运行到Docker的Jenkins中构建Docker映像?

[英]How to build docker image in Jenkins running into docker?

我只是尝试为詹金斯课程构建测试图像,但遇到了问题

+ docker build -t nginx_lamp_app .
/var/jenkins_home/jobs/docker-test/workspace@tmp/durable-d84b5e6a/script.sh: 2: /var/jenkins_home/jobs/docker-test/workspace@tmp/durable-d84b5e6a/script.sh: docker: not found
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 127
Finished: FAILURE

但是我已经在Jenkins的docker-compose文件中配置了docker套接字,像这样

version: "2"
services:
  jenkins:
    image: "jenkins/jenkins:lts"
    ports:
      - "8080:8080"
    restart: "always"
    volumes:
      - "/var/jenkins_home:/var/jenkins_home"
      - "/var/run/docker.sock:/var/run/docker.sock"

但是,当我附加到容器时,当我键入命令“ docker”时,我还会看到“ docker:not found” ...而且我已经更改了对777之类的套接字的权限,这可能是错误的?

谢谢!

您正在尝试实现Docker-in-Docker之类的东西。 仅安装docker套接字将无法使其按预期工作。 您还需要在其中安装docker binary。 您可以通过在安装docker二进制文件并将其用于CI / CD后扩展您的jenkins映像/ Dockerfile或创建(docker docker commit )新映像来执行此操作。 尝试将下面的RUN语句与扩展的Dockerfile或要提交的容器集成(应在ubuntu docker映像上使用)-

RUN  apt-get update && \
     apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
     curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
     add-apt-repository \
     "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
     $(lsb_release -cs) \
     stable" && \
     apt-get update && \
     apt-get -y install docker-ce

参考-https: //github.com/jpetazzo/dind

PS-真的不推荐( http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/

除此之外,您不应该在容器内挂载主机docker二进制文件-

post️这篇文章的旧版本建议将docker二进制文件从主机绑定安装到容器。 这不再可靠,因为Docker引擎不再作为(几乎)静态库分发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM