massimofilippi/gitlab-runnerGitLab Runner是GitLab CI/CD的核心组件,作为代理程序负责在各种环境中执行自动化作业。该Docker镜像封装了GitLab Runner运行时环境,可快速部署并集成到GitLab CI/CD流水线中,实现代码构建、测试和部署的自动化流程。
使用以下命令启动Runner容器(首次运行需注册):
bashdocker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
参数说明:
-v /srv/gitlab-runner/config:/etc/gitlab-runner:挂载配置目录,持久化Runner配置。-v /var/run/docker.sock:/var/run/docker.sock:如需使用Docker执行器,需挂载Docker套接字。进入容器并执行注册命令:
bashdocker exec -it gitlab-runner gitlab-runner register
根据提示输入以下信息:
[***]或自托管GitLab地址)docker,linux,用于匹配CI/CD作业)docker)alpine:latest)注册完成后,在GitLab的CI/CD设置页面可查看已注册的Runner,状态应为"在线"。
通过环境变量自定义Runner行为,启动容器时添加-e参数:
| 环境变量 | 说明 | 示例 |
|---|---|---|
CI_SERVER_URL | GitLab服务器URL | [***] |
RUNNER_REGISTRATION_TOKEN | 注册令牌 | ABC123xyz |
RUNNER_NAME | Runner名称 | my-docker-runner |
RUNNER_TAG_LIST | 标签列表(逗号分隔) | docker,test |
RUNNER_EXECUTOR | 执行器类型 | docker |
DOCKER_IMAGE | 默认Docker镜像 | ubuntu:22.04 |
示例:通过环境变量自动注册Runner
bashdocker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ -e CI_SERVER_URL=[***] \ -e RUNNER_REGISTRATION_TOKEN=ABC123xyz \ -e RUNNER_NAME=auto-registered-runner \ -e RUNNER_TAG_LIST=docker,linux \ -e RUNNER_EXECUTOR=docker \ -e DOCKER_IMAGE=alpine:latest \ gitlab/gitlab-runner:latest
使用docker-compose.yml管理Runner部署:
yamlversion: '3.8' services: gitlab-runner: image: gitlab/gitlab-runner:latest container_name: gitlab-runner restart: always volumes: - /srv/gitlab-runner/config:/etc/gitlab-runner - /var/run/docker.sock:/var/run/docker.sock environment: - CI_SERVER_URL=[***] - RUNNER_REGISTRATION_TOKEN=ABC123xyz - RUNNER_NAME=compose-runner - RUNNER_TAG_LIST=docker,compose - RUNNER_EXECUTOR=docker - DOCKER_IMAGE=ubuntu:22.04
启动命令:docker-compose up -d
Runner配置文件位于容器内/etc/gitlab-runner/config.toml,可通过宿主机挂载目录(如/srv/gitlab-runner/config/config.toml)编辑。主要配置项包括:
concurrent:最大并行作业数check_interval:Runner检查新作业的间隔(秒)[[runners]]:Runner实例配置,包含名称、URL、令牌、执行器设置等示例配置片段:
tomlconcurrent = 4 check_interval = 0 [[runners]] name = "my-docker-runner" url = "[***]" token = "runner-token-here" executor = "docker" [runners.docker] tls_verify = false image = "alpine:latest" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache"] shm_size = 0 [runners.cache] Insecure = false
bashdocker stop gitlab-runner docker rm gitlab-runner docker pull gitlab/gitlab-runner:latest # 重新启动容器(使用原挂载卷保持配置) docker run -d --name gitlab-runner --restart always \ -v /srv/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest
bashdocker logs -f gitlab-runner
bashdocker exec -it gitlab-runner gitlab-runner unregister --name my-docker-runner

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