我在 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/