在Macbook中运行Jenkins管道时尝试连接到Docker守护程序时权限被拒绝

时间:2017-07-07 19:03:49

标签: macos docker jenkins jenkins-pipeline

我正在尝试在我的macbook中运行Jenkins管道作业。我还有本地运行的docker实例。最初,我找不到" docker命令"运行Jenkins作业时出错。我通过添加符号链接修复了错误" ln -f -s /Applications/Docker.app/Contents/Resources/bin/* / usr / local / bin "

我还应用了这两个更改,以便jenkins用户可以访问docker目录

  1. chmod -R 777 /Users/myUserName/Library/Containers/com.docker.docker /
  2. chmod -R 777 /Users/myUserName/Library/Containers/com.docker.helper /
  3. 我遇到错误

      

    尝试连接到Docker守护程序时获得权限被拒绝   在unix上的socket:///var/run/docker.sock:得到   http://%2Fvar%2Frun%2Fdocker.sock/v1.27/containers/openjdk:8/json:   拨打unix /var/run/docker.sock:connect:权限被拒绝       [管道] sh       [测试]运行shell脚本       + docker pull openjdk:8       警告:无法从守护程序获取默认注册表端点(尝试连接到Docker守护程序套接字时获得权限被拒绝   在unix:///var/run/docker.sock:得到   http://%2Fvar%2Frun%2Fdocker.sock/v1.27/info:拨打unix   /var/run/docker.sock:connect:permission denied)。使用系统   默认值:https://index.docker.io/v1/       尝试连接到unix上的Docker守护程序套接字时获得权限被拒绝:///var/run/docker.sock:Post   http://%2Fvar%2Frun%2Fdocker.sock/v1.27/images/create?fromImage=openjdk&tag=8:   拨打unix /var/run/docker.sock:connect:权限被拒绝       [管道]}       [Pipeline] //节点       [管道]管道终点       错误:脚本返回退出代码1       完成:失败

4 个答案:

答案 0 :(得分:2)

这是一个停泊者权限问题。将jenkins用户添加到docker组,如下所示:

usermod -aG docker ${USER}

答案 1 :(得分:2)

有任何方法可以解决这个问题,我上周遇到过这个问题,我解决了问题,但docker-compose此设置可以复制到docker,您可以创建一个指向该位置的共享卷主机docker.sock中的/var/run/docker.sock docker.sock位于您的容器中/var/run/docker.sock version: '2' services: jenkins: build: context: ./jenkins ports: - "8080:8080" expose: - "8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose nginx: build: context: ./nginx container_name: "prueba" links: - jenkins ports: - "80:80" depends_on: - jenkins 。像这样:

socket

为了更好地运作,您必须向sudo chown $USER:$USER /var/run/docker.sock docker和{{1}}组提供用户许可,并提及Innocent Anigbo

答案 2 :(得分:0)

这对我有用: docker run --rm -p 8080:8080 -p 4040:4040 -v /var/run/docker.sock:/var/run/docker.sock -v $ PWD / jenkins_home:/ var / jenkins_home logimethods / jenkins

答案 3 :(得分:0)

有些hacky解决方法:

  • DockerUser是安装Docker的用户
  • DockerUser和Jenkins用户都在staff组中(用groups USERNAME验证)

DockerUser

$ chmod g+rx /Users/DockerUser/Library
$ chmod g+rx /Users/DockerUser/Library/Containers
$ chmod g+rx /Users/DockerUser/Library/Containers/com.docker.docker
$ chmod g+rw /Users/DockerUser/Library/Containers/com.docker.docker/Data/docker.sock

⚠️安全隐患

计算机上的任何用户帐户(不仅仅是Jenkins用户)都已写入 访问您所有的Docker容器/卷/任何内容并启动 他们喜欢的任何东西。

然后,作为其他(Jenkins)用户,您应该能够执行以下操作来启动容器:

$ docker run --rm ubuntu uname -a
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
6a5697faee43: Pull complete
ba13d3bc422b: Pull complete
a254829d9e55: Pull complete
Digest: sha256:fff16eea1a8ae92867721d90c59a75652ea66d29c05294e6e2f898704bdb8cf1
Status: Downloaded newer image for ubuntu:latest

Linux dc3d34c548e5 5.4.39-linuxkit #1 SMP Fri May 8 23:03:06 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux