我正在尝试在我的macbook中运行Jenkins管道作业。我还有本地运行的docker实例。最初,我找不到" docker命令"运行Jenkins作业时出错。我通过添加符号链接修复了错误" ln -f -s /Applications/Docker.app/Contents/Resources/bin/* / usr / local / bin "
我还应用了这两个更改,以便jenkins用户可以访问docker目录
我遇到错误:
尝试连接到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 完成:失败
答案 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