由于不可描述的原因,有些 Docker 镜像在国内无法下载,比如用于构建 Kubernetes 集群的镜像。
这篇文章就是教你如何在国内顺畅地下载这些被墙的 Docker 镜像。
那么如何做呢?
这里主要使用阿里云提供的 "容器镜像服务",它不但提供了镜像的托管能力,还提供了国内外镜像构建服务,而且还免费。
注意,此文讲的跟阿里云提供的 "容器镜像加速" 不是同一个东西,加速是解决速度慢的问题,前提是能访问。本文讲的是在国内由于不可描述的原因根本无法访问的镜像(比如 k8s.gcr.io/kube-apiserver )。
一句话解释:使用阿里云提供的容器镜像服务,构建我们自己的 Docker 镜像。
FROM k8s.gcr.io/kube-apiserver:v1.17.3
MAINTAINER yourname <yourname@examle.com>
明白了吧?
如果还不明白,可以跟着我的步骤操作一遍,总共只有两步,包教会。
这里以 k8s.gcr.io/kube-apiserver:v1.17.3 这个镜像为例进行演示。
第一步:在 GitHub 上创建代码仓库
可以参考我的 github.com/heqingbao/d… ,在 kube-apiserver 目录下创建 Dockerfile 文件:
FROM k8s.gcr.io/kube-apiserver:v1.17.3
MAINTAINER yourname <yourname@example.com>
第二步:阿里云创建镜像仓库
登录 阿里云镜像服务
2.1 创建命名空间
创建一个命名空间,"默认仓库类型" 公有 或 私有 都可以。我这里是 私有。 比如我这里就叫 k8s-docker-image-mirror,如图:

2.2 创建镜像仓库
创建一个镜像仓库,地域选择离自己近的,命名空间选择上面创建的 k8s-docker-image-mirror,仓库名称为 kube-apiserver,仓库类型任意(我这选择公开),如图:

点击『下一步』,开始关联代码仓库,这里选择 GitHub,关联第一步在 GitHub 上创建的代码仓库:

可以看到,除了 GitHub ,还有很多其它的选项,如果 GitHub 访问也吃力的话,可以选择其它的类型。
勾选『海外机器构建』,第一个自动构建镜像勾不勾选都可以,后面配置构建策略的时候可以更改。
然后点击『创建镜像仓库』
2.3 添加构建规则
这一步是配置构建规则,比如分支名、Dockerfile 路径等信息,如图:

进入构建页面,点击『添加规则』,如图:

添加一条构建规则,如图:

如上,内容可根据情况自行修改。
2.4 构建镜像
创建完构建规则后,点击『立即构建』,如图:

稍等会儿,看到构建状态成功,就表示构建完成,如图:

2.5 获取镜像
镜像构建完成了,开始获取镜像,如图:

按照如上指南操作即可,比如我这里可以这样获取:
docker pull registry.cn-shenzhen.aliyuncs.com/k8s-docker-image-mirror/kube-apiserver:latest
可以试一下,速度很快。
注意,第一步 docker login 的时候,需要输入的密码并不是阿里云的登录密码,而是这里单独设置的:

下载到镜像之后,就是改 Tag 了,比如要搭建 K8s 集群,通过这种方式下载后,需要把镜像 Tag 修改成:
docker tag registry.cn-hangzhou.aliyuncs.com/k8s-docker-image-mirror/kube-apiserver k8s.gcr.io/kube-apiserver:v1.17.3
理论上通过这种方式可以构建任意国外被墙的镜像了,比如我就通过这种方式构建了 K8s 集群的所有镜像,如图:

到此结束,你学会了吗?(不会再看一遍)
推荐关注公众号:非著名开发者,订阅更多内容
