Linux 上的托管运行器
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com
GitLab.com 上的 Linux 托管运行器运行在 Google Cloud Compute Engine 上。每个作业都会获得一个完全隔离的临时虚拟机(VM)。默认区域是 us-east1。
每个 VM 都使用 Google Container-Optimized OS(COS)和运行 docker+machine
executor 的最新版 Docker Engine。
机器类型和底层处理器类型可能会变化。针对特定处理器架构优化的作业可能会表现不一致。
未标记 的作业在 small Linux x86-64 运行器上运行。
Linux - x86-64 可用机器类型
GitLab 为 Linux x86-64 托管运行器提供以下机器类型。
| 运行器标签 | vCPUs | 内存 | 存储 |
|---|---|---|---|
saas-linux-small-amd64(默认)
|
2 | 8 GB | 30 GB |
saas-linux-medium-amd64
|
4 | 16 GB | 50 GB |
saas-linux-large-amd64(仅限 Premium 和 Ultimate)
|
8 | 32 GB | 100 GB |
saas-linux-xlarge-amd64(仅限 Premium 和 Ultimate)
|
16 | 64 GB | 200 GB |
saas-linux-2xlarge-amd64(仅限 Premium 和 Ultimate)
|
32 | 128 GB | 200 GB |
Linux - Arm64 可用机器类型
GitLab 为 Linux Arm64 托管运行器提供以下机器类型。
| 运行器标签 | vCPUs | 内存 | 存储 |
|---|---|---|---|
saas-linux-small-arm64
|
2 | 8 GB | 30 GB |
saas-linux-medium-arm64(仅限 Premium 和 Ultimate)
|
4 | 16 GB | 50 GB |
saas-linux-large-arm64(仅限 Premium 和 Ultimate)
|
8 | 32 GB | 100 GB |
当用户在 Linux Arm 托管运行器上使用 Docker-in-Docker 时,可能会遇到网络连接问题。当 Google Cloud 和 Docker 中的最大传输单元(MTU)值不匹配时,就会出现此问题。 要解决此问题,请在客户端 Docker 配置中设置 `–mtu=1400。 有关更多详细信息,请参阅 issue 473739。
容器镜像
由于 Linux 运行器使用 docker+machine executor,
您可以通过在 .gitlab-ci.yml 文件中定义 image 来选择任何容器镜像。
确保您选择的 Docker 镜像与您的处理器架构兼容。
如果未设置镜像,默认为 ruby:3.1。
Docker-in-Docker 支持
带有任何 saas-linux-<size>-<architecture> 标签的运行器都配置为在 privileged 模式下运行,
以支持 Docker-in-Docker。
使用这些运行器,您可以原生构建 Docker 镜像或在隔离的作业中运行多个容器。
带有 gitlab-org 标签的运行器不会在 privileged 模式下运行,不能用于 Docker-in-Docker 构建。
示例 .gitlab-ci.yml 文件
要使用 small 以外的机器类型,请为您的作业添加 tags: 关键字。
例如:
job_small:
script:
- echo "此作业未标记,在默认的 small Linux x86-64 实例上运行"
job_medium:
tags:
- saas-linux-medium-amd64
script:
- echo "此作业在 medium Linux x86-64 实例上运行"
job_large:
tags:
- saas-linux-large-arm64
script:
- echo "此作业在 large Linux Arm64 实例上运行"