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

ppc64le架构Rocky Linux下Podman拉取gitlab-runner helper镜像失败

GitLab Runner拉取ppc64le Helper镜像失败问题解决

问题概述

在ppc64le架构的Rocky Linux 9.2环境中,使用Podman作为容器运行时的自托管GitLab Runner,通过Web界面启动作业时拉取registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:ppc64le-d240d5bb镜像失败,报错核心为用户命名空间UID/GID不足,处理/etc/shadow时出现lchown无效参数错误。本地手动拉取并运行该镜像正常,已尝试修改config.toml、添加subuid/subgid但未解决。

解决方案

1. 确认subuid/subgid配置有效性

  • 检查gitlab-runner用户的子UID/GID条目:
    cat /etc/subuid /etc/subgid | grep gitlab-runner
    
  • 若输出为空或范围过小,执行以下命令添加足够的UID/GID范围(示例为100000-165535,共65536个ID):
    usermod --add-subuids 100000-165535 --add-subgids 100000-165535 gitlab-runner
    
  • 执行Podman迁移并重启服务:
    podman system migrate
    systemctl restart gitlab-runner
    

2. 调整GitLab Runner的Podman执行器配置

修改GitLab Runner的config.toml文件(通常路径为/etc/gitlab-runner/config.toml),确保Podman执行器正确配置用户命名空间:

[[runners]]
  name = "ppc64le-rocky9-runner"
  url = "https://你的GitLab实例地址/"
  token = "你的Runner令牌"
  executor = "podman"
  [runners.podman]
    privileged = false
    pull_policy = "always"
    # 自动分配用户命名空间,避免UID/GID冲突
    userns_mode = "auto"
    # 若auto模式无效,可尝试指定映射范围
    # uid_mappings = [{"container" = 0, "host" = 100000, "size" = 65536}]
    # gid_mappings = [{"container" = 0, "host" = 100000, "size" = 65536}]

修改后重启GitLab Runner服务:

systemctl restart gitlab-runner

3. 配置Podman用户命名空间映射

为gitlab-runner用户创建Podman配置文件,强制使用指定的UID/GID映射:

  • 创建配置文件目录(若不存在):
    mkdir -p ~gitlab-runner/.config/containers
    
  • 编辑~gitlab-runner/.config/containers/containers.conf:
    [containers]
    userns_size = 65536
    [engine]
    userns-remap = "gitlab-runner:gitlab-runner"
    
  • 执行迁移并重启服务:
    podman system migrate
    systemctl restart gitlab-runner
    

4. 检查SELinux限制

Rocky Linux 9默认启用SELinux,可能阻止Podman的权限操作:

  • 临时关闭SELinux测试:
    setenforce 0
    
    重新触发作业,若恢复正常,添加SELinux允许规则:
    ausearch -c 'podman' --raw | audit2allow -M my-podman
    semodule -i my-podman.pp
    setenforce 1
    

5. 匹配GitLab Runner与Helper镜像版本

报错中的Helper镜像标签d240d5bb对应GitLab Runner 16.0.2版本,检查本地Runner版本:

gitlab-runner --version

若版本不匹配,升级或降级GitLab Runner至对应版本,确保与Helper镜像兼容性。

6. 测试特权模式(仅用于排查)

若以上方案无效,可临时启用特权模式排查是否为权限限制问题(注意安全风险,生产环境谨慎使用):
在config.toml的[runners.podman]段添加:

privileged = true

重启服务后重新触发作业。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:43:15