Rootless Podman 运行 Gitea Runner
目录
本文属于「quadlet 配置分享」系列。Quadlet 入门见 Podman 教程,完整 Gitea 配置见 Quadlet 配置分享:Gitea。
用 rootless Podman 跑 Gitea Actions Runner 时遇到的问题,记录一下。
Job 容器创建失败:making volume mountpoint
Runner 正常启动后,执行工作流时报错:
Error response from daemon: make cli opts(): making volume mountpoint for volume /var/run/docker.sock: mkdir /var/run/docker.sock: permission denied原因是 act(nektos/act)创建 job 容器时,会把检测到的 Docker socket 路径作为 bind mount 的源路径。runner 容器里 socket 在 /var/run/docker.sock,act 就请求 Podman 把 host 上的 /var/run/docker.sock 绑进去——但 rootless Podman 的 socket 实际在 /run/user/1000/podman/podman.sock,host 上根本没有 /var/run/docker.sock,Podman 尝试 mkdir 就报错了。
解决方法:在 runner 的 config.yaml 里指定 docker_host,让 act 用真实的 host 路径:
先生成默认配置:
podman run -it --rm --entrypoint "" docker.io/gitea/act_runner:latest act_runner generate-config修改配置:
container:
docker_host: "unix:///run/user/1000/podman/podman.sock"Quadlet 配置
# gitea-runner.container
[Unit]
Requires=gitea.service
After=gitea.service
[Container]
Image=docker.io/gitea/act_runner:latest
Pod=gitea.pod
Volume=/path/to/runner-data:/data
Volume=/run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock
Environment=GITEA_INSTANCE_URL=https://git.example.com GITEA_RUNNER_REGISTRATION_TOKEN=token CONFIG_FILE=/data/config.yaml
AutoUpdate=registry
[Service]
Restart=always/path/to/替换为实际路径。1000替换为你的用户 UID。- config.yaml 其他字段保持默认即可。