如何使用Jenkins docker容器内的docker

我遇到了以下问题:我创build了一个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 

然后当我尝试在jenkins上创build一些工作时,我得到了通常的“权限被拒绝”的信息:

尝试连接到Unix上的Docker守护进程套接字时拒绝了权限:///var/run/docker.sock:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json :dial unix /var/run/docker.sock:连接:权限被拒绝

但是,如果我附加到容器并使用root用户运行命令,则不会发生此问题。

我怎样才能解决这个问题?

我不能通过运行sudo gpasswd -a jenkins docker (因为主机上没有jenkins用户,只在容器中)而将jenkins用户添加到主机上的docker组,并且我也不能在容器内运行此命令(因为容器不知道任何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。

参考文档