让詹金斯在没有sudo的情况下运行docker

时间:2016-09-22 12:13:52

标签: jenkins docker

我想在Docker上运行Jenkins shell命令,如:

docker ps

是否可以不使用任何插件来完成?由于Jenkins不是user,而是a service account,我该如何添加到docker group

4 个答案:

答案 0 :(得分:5)

以下方法让我在没有任何插件的情况下运行docker命令

不是将jenkins用户添加到docker组,而是允许jenkins用户在没有提示输入密码的情况下运行sudo命令,然后在jerkins slave的Dockerfile中创建别名以避免sudo。我必须在连接到主机中运行的守护进程的容器中安装docker client。


 ## allowing jenkins user to run sudo commands
RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
 ## avoid typing sudo in command line
RUN echo "alias docker='sudo docker '" >> /home/jenkins/.bashrc

答案 1 :(得分:5)

首先执行

sudo groupadd docker

然后执行

sudo usermod -aG docker $USER

然后退出重要的注销,因为您的群组成员资格已重新评估

登录并重试

docker ps

有效!

答案 2 :(得分:2)

(摘自这个答案:https://askubuntu.com/a/477554

如果您在Ubuntu上运行并且Jenkins直接在主机上运行(即不在Docker容器内):

添加泊坞组(如果它尚不存在):

sudo groupadd docker

将用户“jenkins”添加到泊坞窗组:

sudo gpasswd -a jenkins docker

重启Docker守护程序:

sudo service docker restart

执行newgrp docker或注销/以激活对组的更改。

答案 3 :(得分:0)

从jenkins管道运行时遇到问题。我将jenkins用户添加到docker组中,重新启动了docker引擎并重新启动了计算机。但是我仍然遇到相同的错误dial unix /var/run/docker.sock: connect: permission denied

最后,我将詹金斯添加到根组中,它解决了我的问题(ubuntu 18.04)(Azure上的VM)

sudo gpasswd -a jenkins root
sudo service docker restart