我有一个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 回答
你错过了docker客户端 . 在Dockerfile中安装它:
Source
Edit: May 2018
正如Guillaume Husta所指出的那样,jpetazzo's blog article不鼓励这种技术:
Docker客户端应安装在容器内,如here所述 . 此外,
jenkins
用户应该在docker
组中,因此执行以下命令:最后重启
my-jenkins
容器 .Original answer:
您可以在此@Adrian Mouat博客article中使用主机的
docker engine
.这避免了在主机和jenkins容器上有多个docker引擎版本 .
在你的Jenkins界面中转到"Manage Jenkins/Global Tool Configuration"
然后向下滚动到Docker Installations并单击"Add Docker" . 给它一个像"myDocker"这样的名字
请务必选中"Install automatically"框 . 单击"Add Installer"并选择"Download from docker.com" . 在Docker版本中保留"latest" . 确保单击“保存” .
在Jenkinsfile中,在运行任何docker命令之前添加以下阶段: