认识
Docker Hub 是一个公共的镜像仓库,全球用户都可以访问,因此在高峰期或者网络状况不佳的情况下,下载 Docker 镜像可能会非常缓慢,甚至会失败。
Registry Mirror 是种私有或公共的容器镜像仓库,可以将容器镜像缓存在本地网络内,从而提高镜像的下载速度和稳定性。
补充说明:我们这里提到 Registry Mirror 泛指能够提供容器镜像缓存以提高镜像下载速度的服务,并不拘泥于某些特定的实现或某个特定的软件服务。
组成
WIP
构建
Registry
Registry,是 Docker 官方实现的 Registry 服务,但是其支持作为 Registry Mirror 运行,以提供镜像缓存功能;
但是,单个 Registry 服务无法同时缓存多个仓库:在部署 registry 服务时,当配置文件指定 proxy.remoteurl 参数后,registry 将作为 Registry Mirror 运行,但是该 Registry Mirror 仅能代理 proxy.remoteurl 所指定的仓库。
1)
Launch the Caching Docker Registry Proxies,通过多个 registry mirror 实例来缓存不同仓库镜像;
2)我们也经过测试,近当仓库地址与 proxy.remoteurl 相同时,镜像才会通过 registry mirror 拉取并缓存;
3)我们一直以为 registry mirror 能够缓存所有镜像,类似于 HTTP Cache 服务。很显然,我们的理解是错误的;
Harbor
Harbor,提供镜像缓存,但其原理与 Registry Mirror 不同,无法在 daemon.json 中配置使用;
Nexus
Nexus,支持作为 Registry Mirror 服务来提供镜像缓存功能;
腾讯云 | 镜像加速
mirror.ccs.tencentyun.com
注意:
- mirror.ccs.tencentyun.com 只支持内网访问,不支持外网域名访问加速。
阿里云 | 镜像加速器
为进一步规范镜像加速器工具的使用,容器镜像服务ACR将于2024年07月02日起对镜像加速器功能进行相应的调整。
调整镜像加速器功能的使用范围:
- 仅限阿里云用户,在支持公网访问的阿里云产品上使用该镜像加速能力。
- 仅支持通过镜像加速器拉取限定范围内的容器镜像。
registry.aliyuncs.com 我们也会尝试使用其中的镜像。
性质
其作为容器镜像缓存,可在本地网络内提供容器镜像的快速访问,进而加速镜像的下载和部署。
其可以有效地减少容器镜像拉取时间,进而减少容器的启动时间和网络带宽消耗。
应用
突破 Docker Hub 拉取频率限制
早期,根据我们目前的用量及环境要求,完全无需自建 Registry Mirror 服务。如果为了提速,我们直接使用第三方即可。
但是,使用第三方的镜像服务,会共享 Docker Hub 频率限制,导致很快无法拉取新镜像。
我们自建 Registry Mirror 能够突破频率限制,因为自建 Registry Mirror 能够配置 DockerHub 帐号以提高拉取次数,并且是我们专用 Registry Mirror 因此不会与他人共享拉取次数。
节约 Container Registry 带宽
我们的 Container Registry Harbor 位于公网,但是服务器的网络带宽有限。
所以
- 在各个网络(VPC)中,我们部署 Registry Mirror 缓存服务,网络中的集群通过 Registry Mirror 来获取镜像。
- 或者,部署到集群,通过 DNS 解析到集群内部,进而通过 Registry Mirror 拉取镜像。