--昨夜西风凋碧树,独上高楼,望尽天涯路
采用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: