jenkins - 如何在 jenkins 管道作业中运行 docker 命令

标签 jenkins docker docker-engine

在我的管理Jenkins > 全局工具配置中,我已经配置了一个名为“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 守护程序是否在此主机上运行?”。

以下是完整的控制台日志:

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 命令的线路之前正在运行/启动。

是否还有其他 native docker-build-step 插件方式来实现我在这里所做的事情?就像docker ps -adocker imagesdocker build -t

一些假设:

假设我选择的节点尚未在我的主机上安装/运行 docker/docker-engine 。这就是 tool 命令的目的,即在节点中自动安装 docker(如果尚未安装 docker)。

最佳答案

这个 Jenkins 插件适用于 docker 客户端;我会通过以下方式解决(解决):

  • 在可访问 docker 守护进程的情况下设置 jenkins 从属服务器,添加标签
  • 设置一个内务管理作业,如果无法访问 docker 守护进程,该作业将会失败(这样我们就可以通知基础设施团队,而无需 QA 找出并升级问题)
  • 分配假定 docker 守护进程可访问此标签的作业

我希望它能有所帮助,我很好奇你们中是否有人有更好的解决方案!

关于jenkins - 如何在 jenkins 管道作业中运行 docker 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41742024/

相关文章:

jenkins - 如何在 Jenkins 的构建历史 View 中查看构建的分支名称?

docker - 在容器的 docker 日志中查找字符串

连接期间出现 docker 错误 - 守护程序未在 Windows 10 上运行

mysql - Docker-compose:将文件从本地环境复制到 EC2 实例

docker - Docker-套接字文件的卷映射是否是覆盖行为?

linux - Docker 主机挂载卷权限

jenkins - 如何放宽Allure的Jenkins安全规则?

java - Jenkins:EMMA 验证错误

jenkins - 我可以通过修改 config.xml 文件来批量编辑 jenkins 作业吗?

javascript - 为什么我的 webpack 包在主机上成功构建但不在 docker 容器中?