You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

提取quay.io指定Docker镜像的Dockerfile时遇权限拒绝,求解决方案

解决Docker镜像Dockerfile提取的权限问题及替代方案

嘿,我来帮你搞定这个问题~你遇到的permission denied错误,本质是运行alpine/dfimage容器时,容器里的用户没权限碰宿主机器上的/var/run/docker.sock——这个文件默认归root用户和docker用户组管,容器里的普通用户自然没权限访问。

先把当前命令的权限问题修好

有两种简单的办法解决这个权限问题:

  1. 直接以root身份运行容器,加个--user root参数就行:
    docker run --user root -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage -sV=1.36 quay.io/opendatahub/spark-cluster-image:spark24
    
  2. 把宿主的docker组ID传给容器,让容器内用户加入这个组:
    先查一下宿主机器上docker组的ID:
    getent group docker | cut -d: -f3
    
    假设查到的ID是999,就用这个ID运行命令:
    docker run -v /var/run/docker.sock:/var/run/docker.sock --rm --group-add 999 alpine/dfimage -sV=1.36 quay.io/opendatahub/spark-cluster-image:spark24
    

还有其他提取Dockerfile的办法

如果上面的方法还是不行,或者你想换个思路,试试这两个常用方案:

docker history扒出镜像构建步骤

Docker镜像的每一层都对应构建时的命令,你可以用docker history把这些步骤导出来,手动整理成Dockerfile:

docker history --no-trunc quay.io/opendatahub/spark-cluster-image:spark24 > image-history.txt

打开生成的image-history.txt,就能看到每一层的构建指令,按顺序整理一下,就能得到近似的Dockerfile(注意有些命令可能被压缩,需要手动调整细节)。

直接找镜像的源码仓库

这个镜像来自quay.io/opendatahub,属于Open Data Hub这个开源项目,这类项目一般会把Dockerfile放在GitHub或GitLab的源码仓库里。你直接搜这个镜像的名称,大概率能找到对应的项目仓库,里面肯定有完整的Dockerfile和构建脚本。

内容的提问来源于stack exchange,提问作者Aviral Srivastava

火山引擎 最新活动