【发布时间】:2017-02-10 16:54:34
【问题描述】:
我在 CI 的 docker setup 中有一个 docker。本质上,这台机器上有一个 jenkins CI 服务器,它使用相同的机器 docker 套接字为 CI 创建节点。
这一直很好,直到我最近更新了 docker。我已经确定了这个问题,但我似乎无法找出正确的魔法来让它发挥作用。
host $ docker exec -it myjenkins bash
jenkins@container $ docker ps
Got permission denied while trying to connect to the Docker daemon
socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json: dial unix /var/run/docker.sock: connect: permission denied
host $ docker exec -it -u root -it myjenkins bash
root@container $ docker ps
... docker ps from host container yay! ...
所以这就是我的猜测。我可以从容器内访问主机 docker 套接字,但我似乎无法向 jenkins 用户授予权限。
我已经添加了 docker 组,还将 jenkins 用户添加到了 docker 组。但我仍然得到同样的错误。我已经重新开始了很多次,所以我有点不知所措。
有没有办法强制用户在特定套接字上获得权限?
【问题讨论】:
-
只是出于好奇,您是否尝试过使用特权容器(内部为 root)做同样的事情?
-
如果你看看我在哪里展示控制台的问题。我表明我以 jenkins 用户身份尝试,然后再次以容器的 root 用户身份尝试。 root 用户有访问权限,jenkins 用户没有。
-
只是出于好奇,你有没有用 privileged 容器尝试同样的事情(就像里面的詹金斯)
-
与 `--userns=host` 一样吗?
-
它是一个特权容器。我不知道如何使用
--userns=host我将如何使用 docker-compose 指定。