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

RHEL服务器GitLab docker+machine执行器配置报错求助

解决方案:RHEL上GitLab Runner docker+machine执行器适配Podman的问题

1. 解决"docker-machine可执行文件未在$PATH中找到"错误

docker+machine执行器依赖docker-machine二进制文件,RHEL默认不预装,且Podman无法替代该工具,需手动安装:

  • 下载并安装docker-machine:
    curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-$(uname -s)-$(uname -m) > /usr/local/bin/docker-machine
    chmod +x /usr/local/bin/docker-machine
    
  • 验证安装:
    docker-machine --version
    
  • 检查GitLab Runner运行用户的$PATH是否包含/usr/local/bin,若为普通用户,可将docker-machine移动到/usr/bin等已在PATH的目录,或手动追加路径:
    echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
    source ~/.bashrc
    

2. 解决Podman Machine初始化时的QEMU缺失错误

Podman Machine在Linux环境下确实依赖QEMU创建虚拟机(旧文档仅标注Mac是过时信息),需安装相关组件:

  • 安装QEMU及依赖:
    sudo dnf install qemu-kvm qemu-img libvirt libvirt-daemon-kvm virt-install
    
  • 启动并启用libvirtd服务:
    sudo systemctl start libvirtd
    sudo systemctl enable libvirtd
    
  • 将当前用户加入libvirt组,避免sudo操作:
    sudo usermod -aG libvirt $USER
    # 重新登录后生效
    
  • 再次执行podman machine init测试。

3. GitLab Runner配置修正

你的配置存在两处关键问题,需调整:

  • Docker兼容API启用:Podman需开启Docker兼容模式,修改/etc/containers/containers.conf:
    [engine]
    enable_docker_compatibility = true
    
    重启Podman服务:sudo systemctl restart podman
  • Socket路径与Machine选项修正:
    • 若GitLab Runner以root运行,[runners.docker]的host应改为系统级Socket:"/run/podman/podman.sock"
    • [runners.machine]的MachineOptions需替换为本地适配参数,而非GitLab SaaS的runner选项,示例:
      MachineOptions = [
        "engine-storage-driver=overlay2",
        "engine-host=tcp://0.0.0.0:2376"
      ]
      

额外建议

若仅需用Podman替代Docker运行流水线,更推荐直接使用docker执行器(Podman兼容Docker API),无需依赖docker-machine:

  • 将executor = "docker+machine"改为executor = "docker"
  • 保留host = "/run/podman/podman.sock"配置即可运行流水线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:02:45