docker-compose not 运行 well if set on a job's shell command with jenkins

docker-compose not run well if set on a job's shell command with jenkins

我在 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 或类似的 运行s 来设置它?在 运行 docker-compose up -d 作为 jenkins 之前检查 DOCKER_HOST var 并查看值是什么。然后你可以在你的脚本中 export DOCKER_HOST=... 当你知道的时候。