“最近 DockerHub 修改了定价,对于免费帐号会限制 200 pulls/6小时,对于匿名帐号则限制 100 pulls/6小时。本文我来介绍下如何使用 Cache 来应对此问题。
”
背景
DockerHub 是全世界最早也是最大的容器镜像仓库,托管着众多操作系统发行版及各类软件的 Docker 镜像。
在推进业务容器化的过程中,不可避免的,我们会需要使用来自 DockerHub 上的容器镜像。无论是在个人本地环境中使用,还是用于跑测试服务
以下是两种主要的解决方案:
构建一些公共基础镜像,存放在企业的私有镜像仓库中给业务方使用:
这种方案下,如果业务方偶尔需要一些小众的/非基础的镜像,可能只是临时测试使用,那通常情况下是没必要将此类镜像作为基础镜像维护的。
结果可能是:
-
使用中直接从 DockerHub pull 镜像,网络状况不佳时,就是无尽的等待;
先 pull 镜像,然后
docker tag
重 tag 后, push 到企业的私有镜像仓库中。这种情况下,如果没有较好的镜像管理规则,那么镜像仓库中就会存在各种无意义的镜像,造成存储资源的浪费。
为 docker daemon 配置 Proxy 进行加速:
-
众多国内镜像加速服务,仅提供 Docker 官方镜像的加速服务,个人/组织下的镜像不提供加速服务;
即使在不同节点上,下载相同的镜像,仍然需要通过网络加速,会产生额外的海外带宽成本;
并且近期 DockerHub 修改了其服务价格[1], 对于免费用户,进行了如下限制:
未登录用户,每 6 小时只允许 pull 100 次
已登录用户,每 6 小时只允许 pull 200 次
如果我们继续使用上述两种模式的话,由于出口 IP 是相对固定的,所以很容易触发 DockerHub 的配额限制。此限制将于 11 月 1 日正式全面实施。
为了能 提升效率 ,以及 节约加速带宽成本 ,企业内部/个人就非常需要一个 DockerHub 全镜像加速服务了,也就是我们常说的 pull through cache
。
下面我来介绍下,如何利用 Docker 开源的项目 registry:2
来实现这一需求。
启动服务
使用 registry:2
部署镜像缓存服务很简单,这里先执行