我在MacOS-HighSierra上使用Jenkins版本2.121.1和Pipeline .
我有一个名为build_docker_image.sh的shell脚本,它使用以下命令构建一个docker镜像:
docker build -t test_api:1 -f test-dockerfile
test-dockerfile是一个Dockerfile,包含构建映像的说明 .
从CLI整个设置工作!但是,当我从Jenkins服务器管道上下文运行它时,它在上面的行失败并出现错误:
尝试在unix上连接到Docker守护程序套接字时获得权限被拒绝:///var/run/docker.sock:发布http://%2Fvar%2Frun%2Fdocker.sock/v1.37/build?buildargs =%图7B%7D&cachefrom =%5B%5D&cgroupparent =&cpuperiod = 0&cpuquota = 0&cpusetcpus =&cpusetmems =&cpushares = 0&dockerfile = .dockerfile.14bce80e6f0b4b9d7b36&标签=%7B%7D&存储器= 0&memswap = 0&网络模式=默认&RM = 1&会话= 2fab4ca31a7ca7b7eceddf80e02de5a7089dc10f50db250d2249e059d7ecfb61&shmsize = 0&T = login_api%3A100_i&目标=&ulimits =空:拨打unix /var/run/docker.sock:connect:权限被拒绝
从Jenkins服务器触发的步骤很简单 . 只需调用脚本:
stage ('Build-Docker-Image') {
steps {
sh '/path/to/build-docker_image.sh'
}
}
我确保Jenkins用户具有“admin”权限和“staff”组成员 . 我在shell脚本中打印出来,如下所示:
WHOAMI jenkins ID = uid = 267(jenkins)gid = 267(jenkins)egid = 1(守护进程)群= 267(jenkins),12(每个人),20(职员),61(localaccounts),80(管理员), 701(com.apple.sharepoint.group.1),33(_appstore),98(_lpadmin),100(_lpoperator),204(_developer),250(_analyticsusers),395(com.apple.access_ftp),398(COM .apple.access_screensharing),399(com.apple.access_ssh)
我按照这里提到的解决方法步骤:https://github.com/docker/for-mac/issues/799 . 我已经多次在Mac上重启了Docker . 它没有帮助 .
1 回答
我知道了:
我没有看到该列表中的组码头:
重启Jenkins并查看问题是否仍然存在 .
另外,我总是使用mesosphere/dcos-jenkins-dind-agent/Dockerfile.alpine作为Jenkins代理,因为我的构建涉及docker,正是因为我不想共享主要主机
/var/run/docker.sock
如果我的构建执行
docker system prune --force
,那么可能会对我的主机映像/容器/卷产生破坏性影响,即使该命令仅用于本地构建docker工件 .在Mac上,线程“No more ‘docker’ group”建议:
检查this example: