我面临以下问题:我创建了一个Jenkins Docker容器,并将主机上的Docker套接字与该容器链接。像这样:
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d --name jenkins --restart unless-stopped jenkins
然后,当我尝试在詹金斯上创建一些作业时,我收到通常的“权限被拒绝”消息:
尝试在unix:///var/run/docker.sock上连接到Docker守护程序套接字时获得的权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json:拨打unix /var/run/docker.sock:连接:权限被拒绝
但是,如果我附加到容器并使用root用户运行命令,则不会发生该问题。
我怎样才能解决这个问题?
我无法通过运行将jenkins用户添加到主机上的docker组sudo gpasswd -a jenkins docker(因为主机上没有jenkins用户,仅在容器中),并且我也无法在容器内运行此命令(因为容器没有了解任何码头工人组)。关于如何解决此问题的任何提示?
sudo gpasswd -a jenkins docker
您可以在容器内添加docker组。这样做:
groupadd -g <docker-group-id> docker
找出<docker-group-id>在主机中运行的方法:
<docker-group-id>
ls -ln /var/run/docker.sock
然后将jenkins用户添加到docker组:
gpasswd -a jenkins docker
考虑到这可能产生的任何安全问题:
警告:泊坞窗组授予与root用户等效的特权。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。
参考文档