如果需要,可以查看GitLab 13.7(2020年12月发布),以了解改进的依赖代理是否有所帮助:
避免 Docker 速率限制,加快流水线速度
为了更快、更可靠的构建,您可以使用依赖代理来缓存托管在 Docker Hub 上的容器映像。
但是,当 Docker 开始强制实施
Docker Hub 拉取请求的速率限制 时,即使从缓存中拉取了您的映像,Docker 仍将其计入您的限制次数。
这是因为依赖代理只缓存了映像的层(或 blob),而不是包含有关如何构建给定映像的信息的清单。
由于清单是必需的,因此仍需要拉取请求。这也意味着,如果 Docker Hub 不可用,您无法拉取映像。
从现在开始,依赖代理将同时缓存映像的层和清单。
因此,第一次拉取
alpine:latest
,映像将被添加到依赖代理缓存并计入您的限制次数之一。
下一次拉取
alpine:latest
,它将从缓存中拉取,即使 Docker Hub 不可用,也不会计入您的限制次数。
不要忘记,从里程碑 13.6 开始,
依赖代理在 Core 中可用。所以,请试用一下,并告诉我们您的想法。或者更好的是,考虑为其中一个开放
问题做出贡献。
请参阅
文档 和
问题。
还在使用GitLab 13.7(2020年12月)
使用预定义变量与依赖代理一起使用
通过代理和缓存来自Docker Hub的容器映像,依赖代理可以帮助您提高流水线的性能。
尽管代理旨在与CI/CD密切配合使用,但要使用此功能,您必须在gitlab.ci-yml文件中定义自己的变量或硬编码值。
这使得个人很难入手,并防止它成为可扩展的解决方案,特别是对于具有许多不同组和项目的组织。
从现在开始,您可以使用
预定义环境变量作为使用依赖代理的直观方式。支持以下变量:
- CI_DEPENDENCY_PROXY_USER:用于登录依赖代理的CI用户。
- CI_DEPENDENCY_PROXY_PASSWORD:用于登录依赖代理的CI密码。
- CI_DEPENDENCY_PROXY_SERVER:用于登录依赖代理的服务器。
- CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:通过依赖代理拉取镜像的镜像前缀。
试试看,告诉我们您的想法!
请参见
文档和
问题。
即使是私有项目,也可以使用此功能(2020年12月)
使用依赖代理与私有项目
您可以使用GitLab依赖代理代理和缓存来自Docker Hub的容器镜像。直到最近,此功能仅适用于公共组,这妨碍了许多人的使用。
现在您可以将依赖代理与私有项目一起使用。
您可以通过缓存容器镜像以供将来使用来减少对Docker Hub的依赖。
因为依赖代理正在将Docker镜像存储在与您的组关联的空间中,所以您必须使用您的GitLab用户名和密码进行身份验证,或者使用具有至少设置为read_registry
范围的个人访问令牌。
请参阅文档和问题。
使用 GitLab 13.9(2021年2月):
自动验证使用依赖代理
通过代理和缓存来自Docker Hub的容器镜像,依赖代理帮助您提高流水线的性能。
尽管代理旨在与CI/CD密切配合使用,但要使用此功能,您必须将凭据添加到
DOCKER_AUTH_CONFIG
CI/CD变量中,或在流水线中手动运行
docker login
。这些解决方案效果很好,但考虑到需要更新多少个
.gitlab-ci.yml
文件,如果GitLab Runner可以自动为您进行身份验证,那将更好。
由于Runner已经能够自动通过集成的GitLab容器注册表进行身份验证,我们能够利用该功能来帮助您自动进行依赖代理身份验证。
现在使用依赖代理来代理和缓存来自Docker Hub的容器镜像变得更加容易,并开始拥有更快、更可靠的构建。
请参见
文档和
问题。
查看 GitLab 13.10(2021年3月)
使用“containerd”和Docker 20+的依赖代理
GitLab依赖代理是一个本地代理,您可以用它来访问Docker Hub上经常访问的上游镜像。在CI/CD情况下,依赖代理接收请求并从注册表返回上游镜像,充当拉动缓存。这有助于减少您的CI分钟数并提高可靠性。
然而,您以前无法通过摘要拉取映像,因为它是不可变标识符,可以确保您使用特定映像和标记的确切版本。由于“containerd”和Docker 20+都依赖于按摘要提取,这意味着许多用户无法使用依赖代理。
我们很高兴地宣布,您现在可以使用摘要从Docker Hub中拉取容器映像。您可以通过将URL添加到您的.gitlab-ci.yml
文件、从命令行手动拉取映像或使用Dockerfile来使用依赖代理。查看文档并开始节省构建时间。
请参阅文档和问题。