DevOps | Jenkins pipeline在shell脚本运行docker权限报错

30 篇文章 0 订阅
29 篇文章 0 订阅

                      --昨夜西风凋碧树,独上高楼,望尽天涯路

采用Jenkins Pipeline流水线方式,通过Pipeline script中执行shell脚本的方式构建docker镜像的时候出现如下情况

错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post .....

dial unix /var/run/docker.sock: connect: permission denied Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post .....

dial unix /var/run/docker.sock: connect: permission denied

执行shell脚本构建镜像的命令如下:

原因:

 docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。

docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令

解决办法:

将jenkins用户加入docker组并且重启Jenkins服务:

sudo gpasswd -a jenkins docker  //添加Jenkins用户到docker用户组
newgrp docker                   //更新docker用户组
groups jenkins                  //查看jenkins所在的用户组
sudo service jenkins restart    //重启Jenkins服务

再次构建Pipeline流水线,构建成功:

查看docker images:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值