Jenkins:无法连接到Docker守护进程

我在CentOS机器上运行Jenkins和Docker。 我有一个Jenkins的工作,拉Github回购,并build立一个docker形象。 当我尝试运行这个工作时,我得到错误:

+ docker build -t myProject . Cannot connect to the Docker daemon. Is the docker daemon running on this host? Build step 'Execute shell' marked build as failure Finished: FAILURE

即使我通过sudo usermod -aG docker jenkins将jenkins添加到我的泊坞窗用户组并重新启动我的机器,也会发生这种情况。 我该如何解决?

顺便说一句,如果尝试改变命令sudo docker build -t myProject . 我只是得到错误sudo: sorry, you must have a tty to run sudo

安装Jenkins和Docker后。 添加jenkins用户到dockergroup(就像你做的那样)

 sudo gpasswd -a jenkins docker 

编辑以下文件

 vi /usr/lib/systemd/system/docker.service 

并编辑这个规则来暴露API:

 ExecStart=/usr/bin/docker daemon -H unix:// -H tcp://localhost:2375 

现在是重新加载并重新启动Docker守护进程的时候了

 systemctl daemon-reload systemctl restart docker 

然后我重新启动了jenkins,我能够在jenkins工作中像jenkins用户一样执行docker命令

 sudo service jenkins restart 

另一种select是将Jenkins docker主机指向“unix:///var/run/docker.sock”

这不是运行实际的docker主机,而是打开它。

@ lvthillo,你的答案是好的,但是,还不够。 您还需要创build泊坞窗组。 请参阅Docker的安装后步骤以 非root用户身份pipe理Docker https://docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user

将运行jenkins的用户添加到docker组。

例如,如果你在jenkins用户下运行Jenkins服务器:

第1步:创buildDocker组

 sudo groupadd docker 

第2步:将您的用户添加到docker组:

 sudo usermod -aG docker jenkins 

步骤3:注销并以jenkins身份重新login,然后testing:

 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 

docker在启动时仅由Docker守护进程给予特殊处理。 该组中的任何用户现在都可以不使用sudo来调用docker。 小心使用。

https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface