加快作业执行速度

您可以通过缓存镜像和依赖项改进作业的性能。

为容器使用代理

您可以使用以下内容缩短下载 Docker 镜像的时间:

  • 极狐GitLab 依赖代理或
  • DockerHub Registry 镜像
  • 其他开源解决方案

极狐GitLab 依赖代理

为了更加快速地获取容器镜像,您可以为代理容器镜像 使用依赖代理

Docker Hub 镜像库镜像

您也可以通过为 Docker Hub 做镜像,缩短作业访问容器镜像的时间。 这会导致Registry as a pull through cache。 除加快作业执行速度外,镜像还可以让您的基础架构 更适应 Docker Hub 中断和 Docker Hub 速率限制。

当 Docker daemon 被配置为使用镜像, 它会自动检查镜像的运行实例上的镜像。如果不可用, 它会从公共 Docker 镜像库拉取镜像,并在返还给您之前将其存储在本地。

同一个镜像的下一个请求从本地镜像库拉取。

详情请参见here

使用 Docker Hub 镜像库镜像

创建 Docker Hub 镜像库镜像:

  1. 登录到代理容器镜像库要运行的专有机器。
  2. 确保 Docker Engine 已经安装到那台机器上。
  3. 创建新的容器镜像库:

    docker run -d -p 6000:5000 \
        -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
        --restart always \
        --name registry registry:2
    

    您可以更改端口号 (6000),在另外一个端口上 展示镜像库。这会使用 http 启动服务器。如果您想 打开 TLS (https),请参阅官方文档

  4. 检查服务器的 IP 地址。

    hostname --ip-address
    

    您应该选择私网 IP 地址。 私网通常是单个 provider 上的机器进行内部通信最快速的解决方法,比如 DigitalOcean、 AWS 或 Azure。 通常,私网上传输的数据并不适用于 您每月的带宽限制。

Docker Hub 镜像库在 MY_REGISTRY_IP:6000 下可访问。

您现在可以配置 config.toml 以使用新的镜像库服务器。

其他开源解决方案

使用分布式缓存

您可以使用分布式缓存缩短下载语言依赖项的时间。

为指定分布式缓存,您可以设置缓存服务器并 配置 Runner 使用缓存服务器

如果您使用了弹性伸缩功能,请参见 缓存功能,了解更多分布式 Runner 的内容。

支持以下缓存服务器:

了解更多极狐GitLab CI/CD,请参见缓存依赖项和最佳实践

使用 AWS S3

如果想将 AWS S3 作为分布式缓存进行使用, 编辑 Runner 的 config.toml 文件,指向 S3 位置并提供连接证书。 确保 Runner 具有到 S3 端点的网络路径。

如果您使用带有 NAT 网关的私有子网,为了节省数据传输成本,您可以启用 S3 VPC 端点。

使用 MinIO

不使用 AWS S3,您可以创建您自己的缓存存储。

  1. 登录到缓存服务器将要运行的专有机器。
  2. 确保 Docker Engine 已经安装到那台机器上。
  3. 启动 MinIO

    docker run -d --restart always -p 9005:9000 \
            -v /.minio:/root/.minio -v /export:/export \
            -e "MINIO_ROOT_USER=<minio_root_username>" \
            -e "MINIO_ROOT_PASSWORD=<minio_root_password>" \
            --name minio \
            minio/minio:latest server /export
    

    那你可以更改端口 9005,在另外的端口上展示缓存服务器。

  4. 检查服务器的 IP 地址。

    hostname --ip-address
    
  5. 您的缓存服务器将在 MY_CACHE_IP:9005 可用。
  6. 创建 Runner 要用的桶。

    sudo mkdir /export/runner
    

    runner 是那种情况下的桶的名称。如果您选择另外一个 桶,结果就会不同。所有的缓存都会存储在 /export 目录中。

  7. 使用 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 值(上述)作为 配置 Runner 时的访问密钥和密钥。

您现在可以 配置 config.toml 以使用新的缓存服务器。

使用谷歌云存储

如果您要使用谷歌云平台作为分布式缓存, 请编辑 Runner 的 config.toml 文件,指向 GCP 位置并提供连接证书。 确保 Runner 拥有到 GCS 端点的网络路径。

使用 Azure Blob 存储

如果您要使用 Azure Blob 存储作为分布式缓存, 请编辑 Runner 的 config.toml 文件,指向 Azure 位置并提供连接证书。 确保 Runner 拥有到 Azure 端点的网络路径。