gpt4 book ai didi

docker - 尝试在Mac上的Jenkins中构建docker镜像时出现 “Permission Denied”错误

转载 作者:行者123 更新时间:2023-12-02 20:04:08 26 4
gpt4 key购买 nike

我在MacOS-HighSierra上将Jenkins版本2.121.1与管道一起使用。

我有一个名为build_docker_image.sh的shell脚本,该脚本使用以下命令构建docker镜像:

docker build -t test_api:1 -f test-dockerfile

test-dockerfile是一个Dockerfile,并具有建立镜像的说明。

通过CLI可以完成整个设置!但是,当我从Jenkins服务器管道上下文运行它时,它在上一行失败并出现错误:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post 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&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=2fab4ca31a7ca7b7eceddf80e02de5a7089dc10f50db250d2249e059d7ecfb61&shmsize=0&t=login_api%3A100_i&target=&ulimits=null: dial unix /var/run/docker.sock: connect: permission denied



从Jenkins服务器触发的步骤很简单。只需调用脚本:
stage ('Build-Docker-Image') {
steps {
sh '/path/to/build-docker_image.sh'
}
}

我确保Jenkins用户具有“管理员”权限和“工作人员”组的成员。我也在shell脚本中将它们打印出来,如下所示:

WHOAMI jenkins ID = uid=267(jenkins) gid=267(jenkins) egid=1(daemon) groups=267(jenkins),12(everyone),20(staff),61(localaccounts),80(admin),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几次。它没有帮助。

最佳答案

我懂了:

id uid=267(jenkins) gid=267(jenkins) groups=267(jenkins),12(everyone),20(staff),61(localaccounts),80(admin),701(com.apple.sharepoint.group.1),33(_appstore),98(_lpadmin),100(_lpoperator),204(_developer)

我在该列表中未看到组docker:
sudo usermod -a -G docker jenkins

重新启动Jenkins,然后查看问题是否仍然存在。

另一方面,在涉及docker的构建中,我始终使用 mesosphere/dcos-jenkins-dind-agent/Dockerfile.alpine 作为Jenkins代理,正是因为我不想共享主要主机 /var/run/docker.sock
如果我的构建执行 docker system prune --force,即使该命令仅用于本地构建docker Artifact ,也可能对我的主机镜像/容器/卷产生破坏性影响。

在Mac上,线程“ No more ‘docker’ group”建议:
docker run ... --group-add staff

检查 this example:
macdev() {
CMD=${2:-/bin/bash}
set_title "dev : $1"
local name=dev-$1
docker inspect $name > /dev/null 2>&1
if [ $? = 0 ]; then
docker attach $name
else
docker run -ti --restart=always \
-e PROJECT=$1 \
--net=host \
--name=$name \
-v $HOME/.vim:/home/ehazlett/.vim \
-v $HOME/.vimrc:/home/ehazlett/.vimrc \
-v $HOME/.bashrc:/home/ehazlett/.bashrc \
-v $HOME/.ssh/config:/home/ehazlett/.ssh/config \
-v ~/Sync:/home/ehazlett/Sync \
-v ~/.docker:/home/ehazlett/.docker \
-v /var/run/docker.sock:/var/run/docker.sock \
--group-add staff \
ehazlett/devbox $CMD
fi
}

关于docker - 尝试在Mac上的Jenkins中构建docker镜像时出现 “Permission Denied”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51200962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com