[英]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.