如何在Podman容器中配置GitLab-Runner使用Docker执行器适配Podman
配置GitLab-Runner容器使用Podman兼容的Docker执行器
前提说明
已通过Podman运行GitLab-Runner且Shell执行器正常工作,现切换为适配Podman的Docker执行器。
步骤1:停止现有GitLab-Runner容器
先停掉并移除当前运行的Runner容器(如需重新配置):
podman stop gitlab-runner podman rm gitlab-runner
步骤2:确认Podman Socket可访问
Podman需开启socket供GitLab-Runner调用,分两种场景:
- Root模式Podman:默认socket路径为
/run/podman/podman.sock,确保该文件存在且权限正常。 - Rootless模式Podman:socket路径通常为
/run/user/[你的UID]/podman/podman.sock(可通过echo $XDG_RUNTIME_DIR查看具体路径),需保证Runner容器能访问该路径。
步骤3:配置Runner执行器
方式一:新注册Runner
执行以下命令(替换占位符为实际信息):
podman run --rm -it \ -v /本地配置目录路径:/etc/gitlab-runner \ gitlab/gitlab-runner:latest register \ --url "https://你的GitLab实例地址/" \ --registration-token "你的注册令牌" \ --description "Podman-Docker执行器Runner" \ --executor "docker" \ --docker-image "alpine:latest" \ --docker-host "unix:///var/run/docker.sock" \ --docker-volumes "/var/run/docker.sock:/var/run/docker.sock"
方式二:修改已有Runner配置
编辑本地挂载的Runner配置文件/本地配置目录路径/config.toml,找到对应Runner段,调整参数如下:
[[runners]] name = "Podman-Docker执行器Runner" url = "https://你的GitLab实例地址/" token = "你的Runner令牌" executor = "docker" [runners.docker] tls_verify = false image = "alpine:latest" privileged = false volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] host = "unix:///var/run/docker.sock" [runners.cache] [runners.cache.s3] [runners.cache.gcs] [runners.cache.azure]
步骤4:重新启动GitLab-Runner容器
启动时必须将Podman Socket挂载到容器内的/var/run/docker.sock(Docker执行器默认读取路径):
- Root模式Podman启动命令:
podman run -d \ --name gitlab-runner \ --restart always \ -v /本地配置目录路径:/etc/gitlab-runner \ -v /run/podman/podman.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
- Rootless模式Podman启动命令(替换
[你的UID]为实际用户ID):
podman run -d \ --name gitlab-runner \ --restart always \ -v /本地配置目录路径:/etc/gitlab-runner \ -v /run/user/[你的UID]/podman/podman.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
验证配置
启动后检查Runner状态及执行器可用性:
podman exec gitlab-runner gitlab-runner verify
提交一个简单的CI/CD任务,测试是否能通过Podman正常拉取镜像并执行任务。
内容的提问来源于stack exchange,提问作者Macley
相关产品推荐
相关产品推荐

