加快作业执行速度

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

为容器使用代理

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

  • 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 位置并提供连接证书。

使用 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 位置并提供连接证书。

使用 Azure Blob 存储

如果您要使用 Azure Blob 存储作为分布式缓存, 请编辑 Runner 的 config.toml 文件,指向 Azure 位置并提供连接证书。