
nitra/actions-runner本镜像提供了一个轻量级、可配置的 GitHub Actions 自托管运行器环境。它基于官方 GitHub Actions Runner 应用程序构建,旨在简化自托管运行器的部署和管理流程,使用户能够轻松地在容器化环境中运行 GitHub Actions 工作流。
docker run 命令bashdocker run -d \ --name github-runner \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ nitra/actions-runner
yamlversion: '3.8' services: runner: image: nitra/actions-runner container_name: github-runner environment: - GITHUB_REPOSITORY=<owner>/<repo> - GITHUB_TOKEN=<your-personal-access-token> - RUNNER_NAME=my-docker-runner - RUNNER_LABELS=docker,linux,x64 restart: unless-stopped
| 环境变量 | 描述 | 必需 | 默认值 |
|---|---|---|---|
GITHUB_REPOSITORY | 要连接的仓库,格式为 owner/repo | 是 | 无 |
GITHUB_ORGANIZATION | 要连接的组织,与 GITHUB_REPOSITORY 二选一 | 否 | 无 |
GITHUB_ENTERPRISE_URL | GitHub Enterprise 实例 URL | 否 | [***] |
GITHUB_TOKEN | 用于注册 runner 的个人访问令牌 | 是 | 无 |
RUNNER_NAME | Runner 的名称 | 否 | 容器 ID |
RUNNER_LABELS | 以逗号分隔的 runner 标签 | 否 | docker,actions-runner |
RUNNER_GROUP | 要加入的 runner 组 | 否 | Default |
RUNNER_WORKDIR | 工作目录路径 | 否 | /home/runner/_work |
RUNNER_TOKEN_FILE | 包含 runner 令牌的文件路径 | 否 | 无 |
UPDATE_RUNNER | 是否自动更新 runner | 否 | true |
DOCKER_ENABLED | 是否启用 Docker-in-Docker | 否 | false |
USER_UID | 运行 runner 的用户 UID | 否 | 1000 |
USER_GID | 运行 runner 的用户 GID | 否 | 1000 |
要启用 Docker-in-Docker 模式,需要添加相应的挂载和特权设置:
bashdocker run -d \ --name github-runner-dind \ --privileged \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ -e DOCKER_ENABLED=true \ -v /var/lib/docker \ nitra/actions-runner
要注册为组织级 runner,使用 GITHUB_ORGANIZATION 而非 GITHUB_REPOSITORY:
bashdocker run -d \ --name github-org-runner \ -e GITHUB_ORGANIZATION=<your-organization> \ -e GITHUB_TOKEN=<your-personal-access-token> \ nitra/actions-runner
对于 GitHub Enterprise 实例,指定企业 URL:
bashdocker run -d \ --name github-enterprise-runner \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ -e GITHUB_ENTERPRISE_URL=[***] \ nitra/actions-runner
bashdocker run -d \ --name github-runner-custom-workdir \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ -e RUNNER_WORKDIR=/home/runner/custom-workdir \ -v /path/on/host:/home/runner/custom-workdir \ nitra/actions-runner
为了在容器重启后保留 runner 配置和工作目录数据,可以挂载外部卷:
bashdocker run -d \ --name github-runner-persistent \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ -v runner-config:/home/runner/.runner \ -v runner-workdir:/home/runner/_work \ nitra/actions-runner
bashdocker run -d \ --name github-runner-custom-user \ -e GITHUB_REPOSITORY=<owner>/<repo> \ -e GITHUB_TOKEN=<your-personal-access-token> \ -e USER_UID=1001 \ -e USER_GID=1001 \ nitra/actions-runner
yamlapiVersion: apps/v1 kind: Deployment metadata: name: github-runner namespace: ci spec: replicas: 3 selector: matchLabels: app: github-runner template: metadata: labels: app: github-runner spec: containers: - name: github-runner image: nitra/actions-runner env: - name: GITHUB_ORGANIZATION value: "my-organization" - name: GITHUB_TOKEN valueFrom: secretKeyRef: name: github-runner-secrets key: github-token - name: RUNNER_LABELS value: "kubernetes,linux,x64" volumeMounts: - name: runner-workdir mountPath: /home/runner/_work volumes: - name: runner-workdir emptyDir: {}
Runner 无法注册:检查 GITHUB_TOKEN 是否具有足够的权限,个人访问令牌需要 repo 范围(对于仓库 runner)或 admin:org 范围(对于组织 runner)。
Docker 命令在工作流中失败:确保已启用 DinD 模式并正确配置了特权访问。
Runner 连接不稳定:检查网络连接和防火墙设置,确保 runner 可以访问 api.github.com 和相关域名。
权限问题:尝试调整 USER_UID 和 USER_GID 环境变量,确保与挂载卷的权限匹配。
bashdocker logs -f github-runner
bashdocker pull nitra/actions-runner docker stop github-runner docker rm github-runner # 重新运行容器,使用上述 docker run 命令
默认情况下,runner 会自动更新。如需禁用自动更新,设置环境变量 UPDATE_RUNNER=false。
GITHUB_TOKEN 安全存储,避免硬编码在配置文件中本项目基于 MIT 许可证开源。详细信息请参见项目仓库中的 LICENSE 文件。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务