我正在尝试在运行 Docker for Mac 17.06.0-ce-mac17 的 OSX 主机上从正在运行的 jenkins docker 容器(jenkins:latest)中调用 docker,按照http://jpetazzo.github.io/中描述的过程2015/09/03/do-not-use-docker-in-docker-for-ci/。</p>
我将 /var/run/docker.sock 挂载到容器中,我在其中粘贴了一个 ubuntu docker 二进制文件,它能够执行 - 但是当我运行时从容器内部以用户“jenkins”的身份运行,例如“docker ps”我得到
尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝:获取http://%2Fvar%2Frun%2Fdocker.sock/v1.30/containers/json?all= 1:拨打 unix /var/run/docker.sock:连接:权限被拒绝。</p>
如果我以 root (docker exec -u 0) 身份连接到容器,它可以工作。
我需要 jenkins 用户才能运行它。我尝试在 ubuntu 容器中添加一个 docker 组并将 jenkins 添加到它,但这没有帮助,因为它与外部无关,而且 Docker for Mac 不像在 linux 上运行它那样工作,你可以做半简单uid/gid 匹配。我想分发这个容器,所以去破解我的 Docker for Mac 安装的一部分的答案不会真正帮助我。如果可以的话,我宁愿不以 root 身份运行整个 jenkins 设置。(我还尝试以特权身份运行容器,但没有帮助。)
根据 Permission Denied 中的建议,在 Macbook 中运行 Jenkins 管道时尝试连接到 Docker Daemon,我将容器内的 /var/run/docker.sock 文件手动分配给 jenkins,现在 jenkins 可以运行 docker。但是我在想出一个可分发容器的解决方案时遇到了麻烦——我不能在 Dockerfile 中做那个 chown,因为该文件还不存在,并且填充到入口点并没有帮助,因为它作为 jenkins 运行.
为了构建和运行将在我的 Mac 上作为非 root 用户从容器内部运行外部 docker 容器的映像,我需要做什么?