我有一个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
8条答案
按热度按时间bkhjykvo1#
你缺少了docker客户端。在Dockerfile中安装它:
Source
p1tboqfb2#
在Jenkins界面中,转到 “管理Jenkins/全局工具配置”
然后向下滚动到Docker Installations并单击 “Add Docker”。给予它一个类似 “myDocker” 的名称
请确保勾选 “自动安装”。单击 “添加安装程序” 并选择 “从www.example.com下载docker.com”。在Docker版本中保留“最新”。请确保单击保存。
在你的Jenkinsfile中,在运行任何docker命令之前添加以下stage:
6vl6ewon3#
编辑日期:2018年5月
正如Guillaume Husta所指出的,这个jpetazzo's blog article不鼓励这种技术:
这篇文章的前版本建议将docker二进制文件从主机
bind-mount
到容器。这不再可靠,因为Docker引擎不再作为(几乎)静态库分发。Docker客户端应该安装在容器中,如here所述。另外,
jenkins
用户应该在docker
组中,因此执行以下操作:最后重启
my-jenkins
容器。原答复:
你可以像@Adrian Mouat博客article一样使用主机的
docker engine
。这避免了在主机和jenkins容器上有多个docker引擎版本。
ghhaqwfi4#
这个问题是在你的Jenkins,它是不能使用Docker引擎,即使你从插件管理器安装Docker.从我得到的研究有一些替代解决这个问题:
1:使用getintodevops/jenkins-withdocker:lts提供的某个预装了docker的docker镜像构建镜像
**2:**从jenkins/jenkins构建镜像,将卷装载到主机上,然后通过创建另一个具有相同卷的容器并执行bash cmd安装docker或使用Robert建议来安装docker
**或3:**最简单的,只需添加从您的主机安装的docker路径,以供您的jenkins容器使用:
-v $(which docker):/usr/bin/docker
你的docker命令应该看起来像这样:
[源代码] https://forums.docker.com/t/docker-not-found-in-jenkins-pipeline/31683
额外选项:如果你只想使用一个Jenkis服务器,这是没有意义的,但是你可以使用镜像安装一个操作系统,比如Ubuntu,然后从那里安装jenkins .war文件
5us2dqdw5#
只要在docker运行时添加选项
--group-add docker
即可。wgx48brx6#
将docker路径(即
-v $(which docker):/usr/bin/docker
)添加到卷中的容器,如ecfdbz9o7#
本节帮助我在jenkins容器中安装docker:https://www.jenkins.io/doc/book/installing/docker/#downloading-and-running-jenkins-in-docker
此外,我必须在步骤4(a)中将Dockerfile中的
FROM jenkins/jenkins:2.303.1-lts-jdk11
替换为jenkins/jenkins
。2vuwiymt8#
我也遇到了同样的问题。在我的Jenkins服务器中找不到Docker。所以要解决这个问题,我们需要安装Docker沿着Jenkins Image。
工作代码:
DockerfileJenkins:
停靠-合成: