一尘不染

如何从Jenkins Docker容器内部使用Docker

jenkins

我面临以下问题:我创建了一个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用户,仅在容器中),并且我也无法在容器内运行此命令(因为容器没有了解任何码头工人组)。关于如何解决此问题的任何提示?


阅读 407

收藏
2020-07-25

共1个答案

一尘不染

您可以在容器内添加docker组。这样做:

groupadd -g <docker-group-id> docker

找出<docker-group-id>在主机中运行的方法:

ls -ln /var/run/docker.sock

然后将jenkins用户添加到docker组:

gpasswd -a jenkins docker

考虑到这可能产生的任何安全问题:

警告:泊坞窗组授予与root用户等效的特权。有关这如何影响系统安全性的详细信息,请参阅Docker Daemon Attack Surface。

参考文档

2020-07-25