作者:你不必害怕q因为我会发光 | 来源:互联网 | 2023-01-30 18:37
我有一个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
1> Robert..:
你错过了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
资源
2> François Mat..:
编辑:2018年5月
正如Guillaume Husta所指出的,这篇jpetazzo的博客文章不鼓励这种技巧:
此帖子bind-mount
的旧版本建议从主机到容器的docker二进制文件.这不再可靠,因为Docker Engine不再作为(几乎)静态库分发.
码头工人客户应在容器内安装的描述在这里.此外,jenkins
用户应该在docker
组中,因此执行以下操作:
$ docker exec -it -u root my-jenkins /bin/bash
# usermod -aG docker jenkins
最后重启my-jenkins
容器.
原始答案:
您可以docker engine
在@Adrian Mouat博客文章中使用主机.
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> Harry..:
在您的Jenkins界面中,转到“管理Jenkins /全局工具配置”
然后向下滚动到Docker Installations并单击“添加Docker”。给它起一个像“ myDocker”的名字
确保选中“自动安装”框。单击“添加安装程序”,然后选择“从docker.com下载”。在Docker版本中保留“最新”。确保单击“保存”。
在运行任何docker命令之前,在Jenkinsfile中添加以下阶段:
stage('Initialize'){
def dockerHome = tool 'myDocker'
env.PATH = "${dockerHome}/bin:${env.PATH}"
}