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:
重启Podman服务:[engine] enable_docker_compatibility = truesudo 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" ]
- 若GitLab Runner以root运行,
额外建议
若仅需用Podman替代Docker运行流水线,更推荐直接使用docker执行器(Podman兼容Docker API),无需依赖docker-machine:
- 将
executor = "docker+machine"改为executor = "docker" - 保留
host = "/run/podman/podman.sock"配置即可运行流水线。
内容的提问来源于stack exchange,提问作者Tanish
相关产品推荐
相关产品推荐

