Help us learn about your current experience with the documentation. Take the survey.

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 实例上运行"