我想在Docker
上运行Jenkins
shell命令,如:
docker ps
是否可以不使用任何插件来完成?由于Jenkins不是user
,而是a service account,我该如何添加到docker group
?
答案 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