circleci/runner-agentCircleCI Runner (Machine Mode) 镜像是用于在自托管环境中以机器模式运行 CircleCI 作业的 Docker 镜像。该模式允许作业直接运行在宿主系统的底层环境中(而非容器隔离环境),支持直接访问系统资源、硬件设备及原生系统依赖,适用于需要突破容器隔离限制的 CI/CD 场景。
该镜像通常通过 CircleCI 官方渠道分发,或通过私有仓库获取。拉取命令示例:
bashdocker pull circleci/runner:machine-mode-latest
通过 docker run 启动 Runner 容器,核心参数需包含 Runner 令牌、名称及资源类信息:
bashdocker run -d \ --name circleci-runner-machine \ --privileged \ # 机器模式需特权模式以访问宿主系统资源 -e CIRCLECI_RUNNER_TOKEN="your_runner_token" \ # 替换为实际 Runner 令牌 -e RUNNER_NAME="my-machine-runner-01" \ # 自定义 Runner 名称(需唯一) -e RESOURCE_CLASS="your-org/machine-medium" \ # 替换为 CircleCI 资源类名称 -e RUNNER_MODE="machine" \ # 指定为机器模式 -v /var/run/docker.sock:/var/run/docker.sock \ # 可选:如需在作业中使用 Docker circleci/runner:machine-mode-latest
说明:
--privileged标志为机器模式必需,用于解除容器对系统资源的访问限制。
| 环境变量名 | 描述 | 是否必填 | 示例值 |
|---|---|---|---|
CIRCLECI_RUNNER_TOKEN | CircleCI Runner 注册令牌,用于认证 Runner 与平台的连接 | 是 | runner-token-abc123... |
RUNNER_NAME | Runner 实例名称,需在组织内唯一,用于识别和管理 | 是 | machine-runner-01 |
RESOURCE_CLASS | CircleCI 资源类名称,格式为 组织名/资源类名,需提前在平台创建 | 是 | my-org/machine-highcpu |
RUNNER_MODE | 运行模式,固定为 machine | 是 | machine |
RUNNER_LABELS | 自定义标签,用于作业调度过滤(逗号分隔) | 否 | gpu,ubuntu2204,x86_64 |
LOG_LEVEL | 日志级别(debug/info/warn/error) | 否 | info |
CIRCLECI_API_URL | CircleCI API 端点(默认:[***]) | 否 | [***] |
通过 Docker Compose 管理 Runner 容器,便于持久化配置和服务编排:
yaml# docker-compose.yml version: '3.8' services: circleci-runner: image: circleci/runner:machine-mode-latest container_name: circleci-machine-runner restart: always # 容器退出时自动重启 privileged: true environment: - CIRCLECI_RUNNER_TOKEN=your_runner_token # 替换为实际令牌 - RUNNER_NAME=machine-runner-prod-01 - RESOURCE_CLASS=my-org/prod-machine - RUNNER_MODE=machine - RUNNER_LABELS=gpu,nvidia,ubuntu2204 - LOG_LEVEL=info volumes: - /var/run/docker.sock:/var/run/docker.sock # 允许作业内使用 Docker - ./runner-config:/etc/circleci-runner # 挂载自定义配置文件(可选) deploy: resources: limits: cpus: '8' # 限制 CPU 核心数 memory: 16G # 限制内存使用
启动命令:
bashdocker-compose up -d
通过 Docker 原生参数限制 Runner 容器的资源使用,避免影响宿主系统:
bashdocker run -d \ --name circleci-runner-machine \ --privileged \ --cpus 4 \ # 限制使用 4 核 CPU --memory 8G \ # 限制使用 8GB 内存 -e CIRCLECI_RUNNER_TOKEN="your_token" \ ... # 其他参数 circleci/runner:machine-mode-latest
将 Runner 配置文件(如 runner-config.yaml)挂载到容器内,实现自定义配置持久化:
bashdocker run -d \ ... -v /host/path/to/runner-config.yaml:/etc/circleci-runner/runner-config.yaml \ ...
指定自定义网络或端口映射(如需外部监控 Runner 状态):
bashdocker run -d \ ... --network custom-network \ # 加入自定义 Docker 网络 -p 9000:9000 \ # 映射监控端口(如 Runner 内置监控接口) ...
Runner 启动后,可通过以下方式验证是否正常连接 CircleCI 平台:
docker logs circleci-runner-machine,出现 Runner registered successfully 表示注册成功Activeresource_class: your-org/machine-medium 的 CircleCI 作业,验证作业是否被该 Runner 接收并执行





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