当前位置: 首页 > 知识库问答 >
问题:

在Mac上尝试在Jenkins中构建docker映像时,出现“拒绝许可”错误

尚声
2023-03-14

我在MacOS HighSierra上使用Jenkins版本2.121.1和管道。

我有一个shell脚本,名为build\u docker\u image。使用以下命令生成docker映像的sh:

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

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

从CLI的整个设置工作!但是,当我从Jenkins服务器Pipeline上下文运行它时,它在上面一行失败并出现错误:

在unix://var/run/docker.sock试图连接到Docker守护程序套接字时,权限被拒绝:发布超文本传输协议:///var/run/docker.sock/v1.37/build?buildargs={}

从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(守护进程)组=267(jenkins)、12(所有人)、20(员工)、61(本地帐户)、80(管理员)、701(com.apple.sharepoint.group.1)、33(应用商店)、98(lpadmin)、100(lpoperator)、204(开发者)、250(分析用户)、395(com.apple.access.ftp)、398(com.apple.access\u屏幕共享)、399(apple.access\ssh)

我遵循了此处提到的变通步骤:https://github.com/docker/for-mac/issues/799.我已经在我的Mac上重新启动了Docker好几次了。这没有帮助。

共有1个答案

靳举
2023-03-14

我懂了:

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

重启詹金斯,看看问题是否仍然存在。

另一个注意事项是,我总是使用meosphoere/dcos-jenkins-dind-agent/Dockerfile.alpine作为Jenkins代理,用于我涉及docker的构建,正是因为我不想共享主主机/var/run/docker.sock

如果我的构建执行了一个docker系统修剪--force,这可能会对我的主机映像/容器/卷产生毁灭性的影响,即使该命令仅用于本地构建docker工件。

在Mac上,线程“不再有“docker”组”建议:

docker run ... --group-add staff

检查此示例:

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
}
 类似资料:
  • 有人知道如何解决这个问题吗?不能在R. install.packages("devool")还安装了依赖项'ps','fs','Procexx','xopen','usethis','Call r','git2r','pkgbuild','pkgload','rcmdcheck','roxygen2' null 下载的源程序包位于“/private/var/folders/s2/cptzh4ls2

  • 我遵循本教程为烧瓶应用程序创建Docker映像。应用程序取决于Torch/PyTorch。因此,我的文件如下所示。 我的Dockerfile如下所示。 当我输入命令

  • 我是IntelliJ和Android开发的新手。我的问题是,当我试图构建一个gradle项目时,它会失败并抛出错误代码B0。 我已经将我的Gradle版本更新到5.1.1,但错误仍然存在 谢谢,对不起我的英语!

  • 似乎“.dotnet”文件夹在Docker容器中受到保护。是否有一种方法可以获得对此的读/写权限,或者改变它的位置?当我猛击容器时,我似乎找不到文件夹。 谢谢你的帮助。

  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个