我遇到以下问题:我创建了一个Jenkins docker容器,并将主机上的docker socket与容器相关联。像这样:
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d --name jenkins --restart unless-stopped jenkins
然后,当我尝试在jenkins上创建一些工作时,我会得到通常的#34;许可被拒绝"消息:
尝试连接到Docker守护程序时获得权限被拒绝 在unix上的socket:///var/run/docker.sock:得到 http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json:拨打unix /var/run/docker.sock:connect:permission denied
但是,如果我附加到容器并使用root用户运行命令,那么问题就不会发生。
我该如何解决这个问题?
我无法通过运行sudo gpasswd -a jenkins docker
将jenkins用户添加到主机上的docker组(因为主机上没有jenkins用户,只在容器中)并且我也无法运行容器内的这个命令(因为容器不知道任何docker组)。关于如何解决这个问题的任何提示?
答案 0 :(得分:3)
您可以在容器内添加docker组。在bash中执行此操作:
groupadd -g <docker-group-id> docker
找出在主持人中运行此内容的<docker-group-id>
:
ls -ln /var/run/docker.sock
然后将jenkins用户添加到docker组:
gpasswd -a jenkins docker
考虑到这可能产生的任何安全问题:
警告:docker组授予与root用户等效的权限。有关这将如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。
请参阅docs