ubuntu - 如果使用 jenkins 在作业的 shell 命令上设置,则 docker-compose 无法正常运行

标签 ubuntu docker jenkins docker-compose docker-machine

我在 Ubuntu 上安装了 Jenkins。将当前用户添加到 docker 组:

sudo usermod -aG docker ${USER}

还将 jenkins 用户添加到 docker 组:

sudo usermod -aG docker jenkins

我在 Jenkins 作业中设置了这个 shell 命令:

#!/bin/sh

docker-compose up -d --build

运行该作业后从 Jenkins 获得这些控制台输出:

...
$ /bin/bash /tmp/jenkins1207165068215188667.sh
Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
Build step 'Execute shell' marked build as failure
Finished: FAILURE

但是,如果我在 jenkins 用户下的主机上尝试命令 docker-compose up -d --build,它会起作用。为什么不能使用 Jenkins 的 shell 命令?

而且,为什么它让我使用 docker-machine?我尝试创建一个 docker 机器,但默认驱动程序是 virtualbox。因为我使用的是没有 GUI 的 Ubuntu,所以我认为 virtualbox 不是必需的。

最佳答案

您是否设置了 DOCKER_HOST 环境变量?这或多或少就是 docker-machine use ... 所做的。您需要告诉 docker 要连接到哪个套接字,并且当您在 jenkins 下登录时可能会运行一些 .bashrc 或类似的设置?在以 jenkins 身份运行 docker-compose up -d 之前检查 DOCKER_HOST var 并查看值是什么。然后你可以在你的脚本中 export DOCKER_HOST=... 当你知道的时候。

关于ubuntu - 如果使用 jenkins 在作业的 shell 命令上设置,则 docker-compose 无法正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50384012/

相关文章:

linux - Ubuntu/Debian 中的 Eclipse Kepler ==> CONTROL + C(复制)不起作用

java - 在 Jenkins 中找不到 Maven

Docker-Compose 文件有 yaml.scanner.ScannerError 但我没有看到任何东西

docker - 自动启动多个现有依赖容器的最佳方法是什么?

maven - JENKINS 如何将 Artifact 部署到 Maven 仓库

windows - 在 jenkins 重新部署 war 之前自动启动停止远程 tomcat(部署插件)

ubuntu - 最小化 Ubuntu 17.04 中所有窗口的键盘快捷键

ubuntu - 命令开始的颜色终端线

python - 通过终端打开 Pycharm

docker - 如何在 docker 中安装全局 npm 依赖项?