Jenkins启动服务报错ERROR: permission denied while trying to connect to the Docker daemon socket

1 问题

Jenkins启动后端服务报下列错误:ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial unix /var/run/docker.sock: connect: permission denied

ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
Build step 'Execute shell' marked build as failure
Finished: FAILURE

从上面报错日志可以看出很明显是权限问题。这个错误通常是由于当前系统登录用户没有足够的权限来访问Docker服务,在Docker默认情况下只有root或者在docker组中的用户才有权限访问Docker服务。所以说应该将当前用户添加至docker用户组或者添加至root组(如果是生产环境请仔细检查权限配置要求,慎用)。

2 查看当前用户是否在docker组中

groups [username]

中括号部分填Jenkins访问节点的系统用户,例如:groups abc。回车即可查看当前用户所在组的信息
发现没有docker组。

3 添加docker用户组

使用usermod命令给用户添加docker用户组

usermod -aG docker [username]

添加完成后重启session尝试连接。

4 补充

如果上述方法解决不了,可以临时改变docker.sock文件的权限

chmod 666 /var/run/docker.sock

需要注意的是,虽然临时解决了问题,但因为权限放的太大,使用完后尽快把权限恢复。

如果上面的方法仍然无法解决问题,或者上述目录不存在docker.sock文件,可以考虑把root权限给当前用户。 方法类似标题3所示。

usermod -aG root [username]

这个地方会给当前用户权限很大,所以需要事后通盘考虑权限划分问题。正确的做法应该是建立docker用户,创建docker用户组,使用docker用户来操纵docker,然后再将当前用户分配docker用户组权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值