一、背景
我们在拉取国外镜像,例如在搭建 Kubernetes 的时候需要使用到来自于 Google : gcr.io/google_containers/kube-apiserver-amd64 这样的镜像,但是国内环境如果需要连接 Google 的话需要 FQ,所以使用 docker pull 的时候又经常提示我们拉取超时,那如何才能顺利拉取到这样的镜像呢?
二、方案
(1)除 google 外的docker 开源网站
国外的:Docker Hub
国内的:daocloud
(2)曲线救国
- GitHub 上的操作
除了从以上两个网站上拉取 docker 镜像外,我们还可以通过 github + docker hub 的方式来通过 github 拉取到 google 的镜像。
Docker hub 提供了直连 GitHub 的方式来构建一个 Repository,而 GitHub 又可以轻松拉取到 google 上面的资源,因此他们俩的组合就可以在 Docker Hub 上构建一个自己的 Repository 来拉取想要的镜像了。
首先,你得有一个 GitHub 的账号,账号注册部分这里就不多说了。
然后在你需要在 GitHub 里面创建一个 Repository:点击下面左侧导航栏的 New 按钮
输入相关的创建信息,点击 Create Repository:
接下来你可以通过上传或者创建的方式来添加一个名为 Dockerfile 的文件并且填入镜像的来源 ,点击提交。:
至于如何填写 Dockerfile 中的内容,你可以直接在 GitHub 中查找你所需要的镜像资源,然后选择中间靠下面的 Dockerfile,最后选择右边一个你觉得 OK 的点击进去就可以看到 Dockerfile 的内容了,将里面的内容复制过来:
当然你也可以使用镜像版本来区别当前的分支:在 Branch 里面输入你的镜像版本来创建一个分支并且切换到分支上去
至此 GitHub 上的操作就结束了。
- Docker Hub 上的操作
同样的,你需要有一个 Docker Hub 的账号,登录进去。
接着,同样也是创建一个 Repository:
接下来关键的步骤来了:首先你需要填入你的 Repository 的基本信息,然后选择连接到 GitHub 上(图中的状态是已经连接好了的,第一次连接的时候需要填入 GitHub 的账号和密码来进行授权,操作很简单)
当连接到 GitHub 上之后,选择对应 GitHub 上面的 Repository 和填写分支信息以及 Docker 镜像的Tag信息,最后点击 Create & Build 即可等待 Docker 自动完成镜像的构建了。
Docker Hub 会提示 Repository 创建成功:
接着可以在跳转到的页面中点击 Builds 来查看构建进度:
当然你也可以点击上图中的 Configure Automated Builds 来创建自动构建功能,即当 GitHub 上的 Dockerfile 变化时,镜像自动的被构建:
静静等待几分钟你就可以看到你的镜像构建成功了: