You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Podman构建镜像默认存储目录解决GitLab CI权限报错

问题根因

你环境中docker命令实际映射的是rootless模式的Podman 3.2.3,存储路径默认读取Podman的配置文件,Docker相关环境变量对Podman不生效。同时你无/home/user_1写入权限,且该路径挂载的是NFS文件系统,默认权限限制会导致pivot_root操作失败,chmod 777无法解决NFS的底层权限限制。

解决方案步骤

1. 为gitlab-runner运行用户(user_1)配置Podman存储路径

首先切换到user_1用户,创建自定义存储目录和配置文件:

# 1. 先创建你有权限的存储目录,选择/data/external下的路径即可
mkdir -p /data/external/podman/storage
mkdir -p /home/user_1/.config/containers/

# 2. 编辑Podman存储配置文件
vi /home/user_1/.config/containers/storage.conf

写入以下配置,将存储路径替换为你有权限的目录:

[storage]
  driver = "overlay"
  runroot = "/run/user/$(id -u user_1)/containers"
  graphroot = "/data/external/podman/storage"
  [storage.options]
    mount_program = "/bin/fuse-overlayfs"
    [storage.options.overlay]
      ignore_chown_errors = "true"
      mountopt = "nodev,metacopy=off"

2. 验证配置生效

切换到user_1用户执行以下命令,确认存储路径已变更:

podman info | grep graphRoot

输出显示为你设置的/data/external/podman/storage即为配置生效。

3. 修正gitlab-ci.yml配置

你之前使用了sudo docker,会切换到root用户的Podman环境,和你配置的user_1的存储路径不匹配,建议去掉sudo,rootless模式的Podman无需sudo即可运行:

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - echo "deploying"
    - docker build -t my_image:v1 .
    - echo "********Docker Images********"
    - docker image list
    - echo "********End of Docker Images********"
    - docker run -d -p 3000:5000 --rm --name my_container my_image:v1
  tags:
    - deploy

4. 重启GitLab Runner让配置生效

/usr/local/bin/gitlab-runner restart

可选:必须保留sudo调用的场景

如果你的业务场景必须使用sudo执行docker命令,需要给root用户也配置相同的存储路径,编辑/etc/containers/storage.conf,修改graphroot参数为/data/external/podman/storage即可。

内容的提问来源于stack exchange,提问作者Amin Ba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:45:09