搭建和使用 k8s 都需要使用到多个镜像源,而这些镜像源均位于国外。如何避免浪费过多的时间在镜像的获取中呢?查阅了网上的各种资料,大部分使用了镜像替换的方法,通过 pull 其他镜像源的里同步的相关镜像,然后在本地通过 tag 重命名的方式使用,操作繁杂。
于是我通过这篇文章 使用代理机器缓存gcr的镜像 想到,可以通过这种 proxy 和 dns 欺骗的方式,启动多个 registry 然后前端使用 nginx 反向代理的方式一次提供多个镜像的代理缓存服务。这里就需要使用 docker-compose 做一个简单的编排。
代理了三个用到的镜像源: gcr.io、k8s.gcr.io、quay.io 。已经将 docker-compose 配置文件上传至 github 。
具体使用方法:
下载所有配置文件,配置 .env 文件中的 HTTPS_PROXY ,便可以使用 docker-compose up -d 一键启动。
客户机配置相应 hosts 用于将镜像源地址指向本地代理缓存服务器。客户机 docker 服务也需要配置 insecure-registries 参数以使用 http 服务类型,而非 https。配置后需要重启 docker 服务。
注意事项:
cache 目录直接配置在了项目当前目录,请留意磁盘空间大小。