如何在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 -adocker imagesdocker build -t

一些假设:

假设我select的节点没有在主机上安装/运行docker / docker-engine。 这是tool命令的目的,自动安装在节点中的docker,如果它不在那里。

这Jenkins插件是为docker客户端; 我会解决(解决):

  • 在docker守护进程可到达的地方设置jenkins奴隶,添加一个标签
  • 设置一个家务pipe理工作,如果docker守护进程无法到达,那么这个工作将会失败(所以我们可以通知下一个团队,而不需要QA来解决问题并且升级)
  • 分配假设docker守护进程可以到达这个标签的作业

我希望它有帮助,我很好奇,如果你们有更好的解决scheme!

Interesting Posts