我们通过Docker搭建了Jenkins服务,同时通过容器挂载了宿主机的/var/run/docker.sock到容器中,这样我们就可以通过unix:///var/run/docker.sock直接访问宿主机的Docker服务了。但是在实际使用过程中却发现Jenkins通过该方法访问docker.sock却报permission异常,就是权限不足。

网上一些方法通过赋予 /var/run/docker.sock 777 权限或者修改Jenkins容器使用root用户启动,但都不是太正规的方式。

下面是我的解决方案:

进入Jenkins容器,通过ls -l /var/run/docker.sock 命令我们可以看到docker.sock文件属于root用户982用户组,所以我们只需要把Jenkins用户加入该组就能解决问题!

# 通过ls命令查看/var/run/docker.sock所在用户组
ls -l /var/run/docker.sock
# 通过上述命令得到用户组id 为982,通过该id建立docker组
groupadd -g 982 docker
# 把当前Jenkins容器用户jenkins加入docker组
usermod -a -G docker jenkins