如何从Jenkins docker容器

时间:2017-08-01 20:47:25

标签: docker jenkins

我遇到以下问题:我创建了一个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组)。关于如何解决这个问题的任何提示?

1 个答案:

答案 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