【发布时间】:2018-01-05 13:55:02
【问题描述】:
我已经在 Mac 上安装了 docker,一切运行良好。我正在使用 Jenkins docker 映像并运行它。在使用 Jenkins 作为 CI 服务器并通过运行 docker 命令来构建更多镜像时,我知道我们必须在运行 Jenkins 镜像时绑定 mount /var/run/docker.sock 以便它可以访问 docker 守护进程。
我这样做了,并在 Jenkins 的容器中安装了 docker CLI。但是在运行 docker ps 或任何其他 docker 命令时,它会抛出错误:
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.28/containers/json: dial unix /var/run/docker.sock: connect: permission denied
当我以 root 用户身份连接到容器时,它工作正常。但是切换到“jenkins”用户会抛出上述错误。我已经将“jenkins”用户添加到 sudo 列表,但没有帮助。
我发现很少有文章建议将“jenkins”用户添加到“docker”组,但令我惊讶的是,我在 Mac 或容器内没有找到任何 docker 组。
非常感谢任何帮助。谢谢
【问题讨论】:
-
Docker > 文件共享...
/var默认不共享 -
虽然不是很酷但是修改 /var/run/docker.sock 的权限解决了这个问题。我已经向 jenkins 用户提供了对 /var/run/docker.sock 文件的适当权限,并且它运行良好。
-
嘿 Neeraj,你在 /var/run/docker.sock 上做过 chmod 吗?
-
@TibinPaul,是的。我必须向我的用户提供 /var/run/docker.sock 的权限。