问题
我们在拉取国外镜像,例如在搭建 Kubernetes 的时候需要使用到来自于 Google:gcr.io/google_containers/kube-apiserver-amd64
这样的镜像,但是国内环境被墙连不上,所以使用 docker pull 的时候又经常提示我们拉取超时。
用别的镜像库
除 google
外的docker 开源网站
- 国外的:Docker Hub
- 国内的:daocloud
曲线救国
但是,有些镜像以上2个镜像库都没有,这时,我们还可以通过 github
+ docker hub
的方式来拉取到 google 的镜像。
就是这样的
你 -----> Docker Hub -----> Google镜像
Docker hub
提供了直连GitHub
的方式来构建一个 Repository,而 GitHub 又可以轻松拉取到 google 上面的资源,因此他们俩的组合就可以在 Docker Hub 上构建一个自己的 Repository 来拉取想要的镜像了。
第一步:GitHub,准备dockerfile
首先,你得有一个 GitHub 的账号,然后在你需要在 GitHub 里面创建一个 Repository:点击下面左侧导航栏的 New 按钮
接下来你可以通过上传或者创建的方式来添加一个名为 Dockerfile 的文件并且填入镜像的来源,点击提交:
至于如何填写Dockerfile
中的内容,你可以直接在 GitHub 中查找你所需要的镜像资源,然后选择中间靠下面的 Dockerfile,最后选择右边一个你觉得 OK 的点击进去就可以看到 Dockerfile 的内容了,将里面的内容复制过来:
至此 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 变化时,镜像自动的被构建:
也可以指定dockerfile的位置
静静等待几分钟你就可以看到你的镜像构建成功了: