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

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

采用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流水线,构建成功:

DevOps | Jenkins pipeline在shell脚本运行docker权限报错_第1张图片

查看docker images:

 

你可能感兴趣的:(CICD,自动化,运维,Jenkins,DevOps,镜像,容器,Docker,云技术,操作系统,CI/CD,持续集成/持续交付)