解决Jenkins下shell脚本运行Docker权限报错

Solve the problem of Docker permission error for shell script running under Jenkins

Posted by alovn on November 15, 2020

在Jenkins下shell脚本执行 docker 命令如果抛出无权限执行, 如下:

1
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.

明显可以看出来是因为jenkins没有执行docker的权限,解决方法也很简单,只要将jenkins用户加入docker组,然后重启Jenkins服务,就可以了。

1
2
sudo gpasswd -a jenkins docker
sudo service jenkins restart

另外如果在使用jenkins执行docker exec容器内命令时,jenkins报错:

1
Jenkins: the input device is not a TTY

请检查下是否docker后添加了 -it 的参数, 只要去掉docker的-it或者把-it改成-i,这是因为docker exec的参数t是指分配一个虚拟的终端,jenkins在执行job时并不是在TTY终端中执行,所以-t的参数会报错。