2017-08-01 84 views
4

我面临以下问题:我创建了一个Jenkins码头集装箱,并将主机上的码头插槽与容器链接起来。就像这样:如何从Jenkins码头集装箱内部使用码头工人

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:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.29/images/json:拨号UNIX /var/run/docker.sock:连接:许可被拒绝

但这个问题没有按如果我附加到容器并使用root用户运行该命令,则不会发生。

我该如何解决这个问题?

我不能在主机上通过运行sudo gpasswd -a jenkins docker将jenkins用户添加到主机上的docker组(因为主机上只有容器中没有jenkins用户),我也无法在容器内运行此命令(因为该容器不知道任何码头组)。有关如何解决此问题的任何提示?

+1

尝试在运行容器添加'--privileged' agrument。命令将如下所示:docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 -p 50000:50000 -d --name jenkins --restart除非 - 停止 - 特权詹金斯' –

回答

2

您可以在容器中添加docker组。在bash中做到这一点:

groupadd -g <docker-group-id> docker 

找出<docker-group-id>在主机上运行此:

ls -ln /var/run/docker.sock 

然后詹金斯用户添加到泊坞窗组:

gpasswd -a jenkins docker 

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

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

参考docs

+0

我最终改进了一点你的第一个2个命令到一个单一的。像这样:'groupadd -g $(ls -ln /var/run/docker.sock | awk'{print $ 4}')docker'。谢谢! –

+0

不错!欢迎您:) – Robert

+0

如何获得? –