我正在CentOS计算机上运行Jenkins和Docker。我有一个Jenkins作业,它拉取Github存储库并构建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添加到我的docker用户组并重新启动了我的机器,这个问题还是会出现。我该如何解决这个问题?
顺便说一下,如果尝试将命令更改为sudo docker build -t myProject .
,我只会得到错误sudo: sorry, you must have a tty to run sudo
8条答案
按热度按时间u91tlkcl1#
在安装Jenkins和Docker之后,将Jenkins用户添加到dockergroup中(就像您所做的那样)
编辑以下文件
并编辑此规则以公开API:
不要使用
ExecStart
创建新行,只需将命令添加到现有行的末尾。现在是时候重新加载并重新启动Docker守护进程了
然后重新启动jenkins,您应该能够在jenkins作业中以jenkins用户的身份执行docker命令
xnifntxz2#
我和Jenkins也有同样的问题。
我通过在docker-compose.yml上添加**/var/run/docker.sock:/var/run/docker.sock**修复了这个问题。
kyvafyod3#
另一个选择是将Jenkins Docker主机指向“unix:///var/run/docker.sock”
这不是运行实际的Docker主机并将其打开。
0qx6xfy64#
@lvthillo,您的回答很好,但是,还不够。您还需要创建Docker组。请参阅Docker的安装后步骤****以非root用户身份管理Dockerhttps:docs.docker.com/engine/installation/linux/linux-postinstall/#manage-docker-as-a-non-root-user
以将运行jenkins的用户添加到Docker组。
例如,如果您在
jenkins
用户下运行Jenkins服务器:步骤1:创建Docker组
步骤2:将您的用户添加到
docker
组:步骤3:注销并以jenkins身份重新登录,然后测试:
docker守护进程在启动时对
docker
组进行了特殊处理,这就是为了实现这个目的。现在该组中的任何用户都可以在不使用sudo的情况下调用docker。https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
ar5n3qh55#
不能使用
myProject
作为标记名。图像名和标记必须全部小写。如果您使用的是docker-compose,您将看到一个误导性错误
https://github.com/docker/compose/issues/2816
o75abkj46#
对我的解决办法是...
重新加载并重新启动Docker守护程序
但随后
通过管理Jenkins -〉管理节点-〉断开代理,断开Docker Jenkins代理。
然后重新连接代理,该代理将用户保留在Docker组中。
neekobn87#
我用的是Jenkins蓝海
我的问题是,我想使用docker.sock并使用与托管系统相同的守护进程,而不是从容器设置的docker守护进程进行部署
对于,请确保将DOCKER_HOST环境正确设置为在卷中指定Docker.Socket
并通过指定docker守护进程的docker.sock,将其指定为托管您希望遵从的容器的守护进程
请确保未指定任何TLS参数,否则它可能会尝试使用HTTPS进行通信。
删除以下内容:
停靠文件:
运行命令:
fgw7neuy8#
尝试运行:
sudo gpasswd -a jenkins docker
这会将Jenkins用户添加到Docker组。