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