一、背景

我们在拉取国外镜像,例如在搭建 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 按钮

docker拉github docker拉github上文件_docker

 

输入相关的创建信息,点击 Create Repository:

docker拉github docker拉github上文件_docker拉github_02

 

接下来你可以通过上传或者创建的方式来添加一个名为 Dockerfile 的文件并且填入镜像的来源 ,点击提交。:

docker拉github docker拉github上文件_Docker_03

 

docker拉github docker拉github上文件_Docker_04

 

至于如何填写 Dockerfile 中的内容,你可以直接在 GitHub 中查找你所需要的镜像资源,然后选择中间靠下面的 Dockerfile,最后选择右边一个你觉得 OK 的点击进去就可以看到 Dockerfile 的内容了,将里面的内容复制过来:

docker拉github docker拉github上文件_docker拉github_05

 

 

当然你也可以使用镜像版本来区别当前的分支:在 Branch 里面输入你的镜像版本来创建一个分支并且切换到分支上去

docker拉github docker拉github上文件_Docker_06

至此 GitHub 上的操作就结束了。

 

  • Docker Hub 上的操作

同样的,你需要有一个 Docker Hub 的账号,登录进去。

接着,同样也是创建一个 Repository:

docker拉github docker拉github上文件_docker拉github_07

 

 

接下来关键的步骤来了:首先你需要填入你的 Repository 的基本信息,然后选择连接到 GitHub 上(图中的状态是已经连接好了的,第一次连接的时候需要填入 GitHub 的账号和密码来进行授权,操作很简单)

docker拉github docker拉github上文件_docker_08

 

当连接到 GitHub 上之后,选择对应 GitHub 上面的 Repository 和填写分支信息以及 Docker 镜像的Tag信息,最后点击 Create & Build 即可等待 Docker 自动完成镜像的构建了。

docker拉github docker拉github上文件_镜像构建_09

 

Docker Hub 会提示 Repository 创建成功:

docker拉github docker拉github上文件_docker_10

 

接着可以在跳转到的页面中点击 Builds 来查看构建进度:

docker拉github docker拉github上文件_镜像构建_11

 

当然你也可以点击上图中的 Configure Automated Builds 来创建自动构建功能,即当 GitHub 上的 Dockerfile 变化时,镜像自动的被构建:

docker拉github docker拉github上文件_docker拉github_12

 

静静等待几分钟你就可以看到你的镜像构建成功了:

docker拉github docker拉github上文件_镜像构建_13