如何在jenkinspipe道作业中运行docker命令
在我的Manage Jenkins
> Global Tool Configuration
,我已经configuration了一个名为“docker”的工具,如下所示:
name: docker install automatically: CHECKED docker version: latest
然后,我在我的jenkinsfile
中的所有内容如下,没有别的:
node { DOCKER_HOME = tool "docker" sh """ echo $DOCKER_HOME ls $DOCKER_HOME/bin/ $DOCKER_HOME/bin/docker images $DOCKER_HOME/bin/docker ps -a """ }
我得到这样的错误:“ 无法连接到Docker守护进程,docker守护进程是否在该主机上运行? ”。
以下是完整的console log
:
Started by user Syed Rakib Al Hasan [Pipeline] node Running on master in /var/jenkins_home/workspace/helloDocker [Pipeline] { [Pipeline] tool [Pipeline] sh [helloDocker] Running shell script + echo /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker + ls /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/ docker + /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker images Cannot connect to the Docker daemon. Is the docker daemon running on this host? [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 1 Finished: FAILURE
如何确保docker守护程序/服务正在运行/启动,然后我的pipe道到达要运行docker命令的行。
有没有其他的本地docker构build步骤插件的方式来实现我在这里做什么? 像docker ps -a
或docker images
或docker build -t
?
一些假设:
假设我select的节点没有在主机上安装/运行docker / docker-engine。 这是tool
命令的目的,自动安装在节点中的docker,如果它不在那里。
这Jenkins插件是为docker客户端; 我会解决(解决):
- 在docker守护进程可到达的地方设置jenkins奴隶,添加一个标签
- 设置一个家务pipe理工作,如果docker守护进程无法到达,那么这个工作将会失败(所以我们可以通知下一个团队,而不需要QA来解决问题并且升级)
- 分配假设docker守护进程可以到达这个标签的作业
我希望它有帮助,我很好奇,如果你们有更好的解决scheme!