如何在詹金斯管道作业中运行docker命令

拉基卜

在我的Manage Jenkins>中Global Tool 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命令的行之前,如何确保docker守护程序/服务正在运行/启动。

还有其他本地docker-build-step插件方法可以实现我在这里所做的工作吗?喜欢docker ps -a还是docker imagesdocker build -t

一些假设:

假设我选择的节点尚未在主机中安装/运行docker / docker-engine。这是该tool命令的目的,以在节点尚不存在的情况下自动将docker安装在该节点中。

久拉·韦伯

该Jenkins插件用于Docker客户端; 我可以通过以下方法解决(解决):

  • 在可访问docker daemon的地方设置jenkins slaves,添加标签
  • 设置家政工作,如果docker daemon无法访问,该工作将失败(因此我们可以通知基础架构团队,而无需QA来找出并解决问题)
  • 分配假定docker守护程序可访问此标签的作业

希望对您有所帮助,我很好奇您是否有更好的解决方案!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章