
chaste/runner该Docker镜像用于在自定义环境中运行GitHub Actions工作流,封装了GitHub Actions Runner核心组件,支持本地、私有环境或隔离网络中执行GitHub Actions作业,无需依赖GitHub官方托管的公共Runner。镜像提供标准化的Runner运行环境,简化自定义Runner的部署与管理,适用于CI/CD流水线集成、本地调试及安全合规场景。
repo 和 workflow 权限(创建路径:GitHub账号 → Settings → Developer settings → Personal access tokens → Generate new token)从Docker Registry拉取镜像(以镜像名称github-actions-runner为例,实际需替换为具体镜像源):
bashdocker pull [镜像源地址]/github-actions-runner:latest
若使用私有仓库,需先登录:
docker login [私有仓库地址]
通过docker run命令启动Runner,核心参数包括环境变量(认证与配置)和数据卷(持久化配置):
bashdocker run -d \ --name github-runner \ -e GITHUB_REPOSITORY="owner/repo" \ # 目标仓库(格式:用户名/仓库名) -e GITHUB_TOKEN="ghp_xxx" \ # GitHub PAT(需repo、workflow权限) -e RUNNER_NAME="my-local-runner" \ # Runner名称(自定义) -e RUNNER_LABELS="local,linux,x64" \ # Runner标签(用于工作流选择,逗号分隔) -v /path/on/host/runner-data:/runner \ # 挂载Runner配置目录(持久化注册信息) --restart unless-stopped \ # 异常退出后自动重启 [镜像源地址]/github-actions-runner:latest
docker ps | grep github-runnerdocker logs -f github-runner(可查看注册过程、作业执行日志)镜像通过环境变量控制Runner行为,以下为核心变量说明:
| 环境变量名 | 必选 | 描述 | 示例值 |
|---|---|---|---|
GITHUB_REPOSITORY | 是 | 目标GitHub仓库(格式:owner/repo,支持组织级Runner:org/组织名) | my-org/my-project |
GITHUB_TOKEN | 是 | GitHub Personal Access Token,用于注册Runner | ghp_Abc123...(需保密) |
RUNNER_NAME | 否 | Runner名称,默认自动生成(runner-{随机字符串}) | prod-runner-01 |
RUNNER_LABELS | 否 | Runner标签(逗号分隔),用于工作流runs-on字段匹配 | local,arm64,high-memory |
RUNNER_WORKDIR | 否 | 作业执行工作目录,默认/_work | /custom-workdir |
RUNNER_GROUP | 否 | Runner所属组(仅组织级Runner需配置) | production-runners |
HTTP_PROXY/HTTPS_PROXY | 否 | 网络代理配置(适用于隔离环境) | [***] |
NO_PROXY | 否 | 不经过代理的域名/IP(逗号分隔) | github.com,192.168.1.0/24 |
通过docker-compose.yml管理Runner部署,支持多实例、依赖管理等场景:
yamlversion: '3.8' services: github-runner: image: [镜像源地址]/github-actions-runner:latest container_name: github-runner restart: unless-stopped environment: - GITHUB_REPOSITORY=my-org/my-project - GITHUB_TOKEN=${GITHUB_TOKEN} # 建议通过宿主机环境变量传入,避免硬编码 - RUNNER_NAME=staging-runner - RUNNER_LABELS=staging,linux,x64 - RUNNER_WORKDIR=/workspace - HTTP_PROXY=[***] volumes: - ./runner-data:/runner # 持久化Runner配置(注册信息、证书等) - ./workspace:/workspace # 挂载自定义工作目录(可选) deploy: resources: limits: cpus: '2' # 限制CPU核心数 memory: 4G # 限制内存使用
启动命令:GITHUB_TOKEN=ghp_xxx docker-compose up -d
-v /host/path:/runner挂载/runner目录,持久化Runner注册信息(避免容器重建后需重新注册)。RUNNER_WORKDIR指定作业执行目录,建议挂载宿主机目录(如-v /host/workdir:/workspace),避免容器内存储满导致作业失败。支持为GitHub组织注册Runner(所有仓库共享),需修改GITHUB_REPOSITORY为组织名(格式:org/组织名),并确保GITHUB_TOKEN具备admin:org权限:
bashdocker run -d \ -e GITHUB_REPOSITORY="org/my-company" \ # 组织级Runner -e GITHUB_TOKEN="ghp_xxx" \ # 需admin:org权限 -e RUNNER_GROUP="shared-runners" \ # 组织Runner组 -v /host/runner-data:/runner \ [镜像源地址]/github-actions-runner:latest
除环境变量外,可通过命令行参数或挂载配置文件调整高级行为(需镜像支持):
docker run命令传递)--unattended:非交互式模式(默认启用,适合容器环境)--ephemeral:临时Runner(作业完成后自动注销,避免资源占用),需镜像支持EPHEMERAL_RUNNER=true环境变量--replace:替换同名Runner(若已存在同名Runner,先注销再注册)如需覆盖默认启动脚本(如添加前置初始化步骤),可通过--entrypoint指定自定义脚本:
bashdocker run -d \ --entrypoint /custom-entrypoint.sh \ -v ./custom-entrypoint.sh:/custom-entrypoint.sh \ ... # 其他参数
GITHUB_TOKEN需严格保密,禁止硬编码到脚本或镜像中,建议通过Docker Secrets、Kubernetes Secrets或CI/CD平台的环境变量管理(如GitHub Actions Secrets、GitLab CI Variables)。--cpus 2 --memory 4g),避免Runner占用过多宿主机资源。--network host或自定义Docker网络实现网络打通。GITHUB_TOKEN权限(需repo和workflow权限)、GITHUB_REPOSITORY格式是否正确、网络是否可访问api.github.com。docker logs <容器名>),检查作业步骤输出;确认Runner标签与工作流runs-on匹配。/runner目录,重新启动容器(会重新注册Runner,原Runner需手动在GitHub上移除)。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务