通过dockerhub访问gcr.io镜像

前言

在docker的学习的过程中,遇到的第一个拦路虎就是很多gcr.io的镜像无法下载,原因很简单,就是google被墙了,常用的解决方案有:
1、找一台国外的服务器(各种公有云服务器),必须有公网IP,通过docker pull镜像后,然后docker save保存为tar包,再传输到本地,通过docker load导入;缺点:首先得有一台服务器,而且每次操作都很麻烦。
2、通过国内一些公开的镜像服务器,寻找别人上传的镜像下载,缺点:匹配的镜像版本很难找,而且镜像本身的信息是否安全, 也不好说。
3、通过翻墙软件去访问国外服务器,缺点:目前打击力度很大,免费的很难找到,专业的价格又高。
4、通过dockerhub曲线救国,因为dockerhub的服务器在国外,通过dockerhub的自动构建功能,结合github仓库,基于Dockerfile,构建docker镜像,然后可以从dockerhub获取docker pull镜像到本地。

本文我们主要介绍一下第四种方法。

1、创建dockerhub帐号

访问dockerhub官网,注册的时候需要注意,可能会遇到输入用户名、邮箱、密码后,Sign up按钮变灰,点击没有反应的现象,这是因为docker hub在注册验证的时候使用了google的人机身份验证功能,这时候需要通过代理软件翻墙(因为google被墙了),否则无法出现人机身份验证的按钮;

通过dockerhub访问gcr.io镜像

使用代理的时候需要注意,可能人机身份验证的按钮会出现,但会提升“系统繁忙,稍后再试”的字样,这是因为代理地址被多人同时使用的原因所导致。可以使用谷歌访问助手,安装成功后,重新启动chrome浏览器,会出现如下内容,

通过dockerhub访问gcr.io镜像

注册成功后,登录进入hub.docker.dom

2、github 帐号授权

登录dockerhub,点击Create -> 选择 Create Automated Build -> Linked Accounts -> Link Github -> Public and Private (Recommended) -> Authorize application -> 输入 Github 密码;

3、 仓库自动构建

接下来,我们以kubernetes的gcr.io/google_containers/kubedns-amd64:1.9为例,来说明一下docker镜像自动构建的过程;
1、登录github,创建一个仓库,笔者这里的仓库名称是:docker-image,新建一个文件,名称是:kubedns-amd64-v1.9(这个名称一般自己随便起,主要是便于识别即可);

2、kubedns-amd64-v1.9文件内容:From gcr.io/google_containers/kubedns-amd64:1.9
文件地址:https://github.com/xingwei422...

通过dockerhub访问gcr.io镜像

3、登录dockerhub,点击Create -> 选择Create Automated Build,选择github上面指定的仓库名称(docker-image)

通过dockerhub访问gcr.io镜像

4、输入镜像的名称、描述,点击 Click here to customize按钮,选择github的分支,在Dockerfile Location位置输入刚才github上创建的文件名称:kubedns-amd64-v1.9,Docker Tag则是镜像的标签,默认是latest,这里我们设置为1.9;然后点击蓝色的Create按钮;

通过dockerhub访问gcr.io镜像

5、创建完成后,点击Build Settings按钮,可以看到刚才我们设置的文件位置和标签信息,点击Trigger按钮,开始触发构建:

通过dockerhub访问gcr.io镜像

6、在Build Details中可以看到构建的详情:

通过dockerhub访问gcr.io镜像

点击status列中的内容,可以进入详情页面,能看到构建过程的日志输出:

通过dockerhub访问gcr.io镜像

7、在tags中能够查看到镜像的标签信息:

通过dockerhub访问gcr.io镜像

至此,镜像的自动创建过程就已经完成了:

通过dockerhub访问gcr.io镜像

4、结束语

  1. 下载镜像到本机:docker pull xingwei4225/kubedns-amd64:1.9 ;
  2. 为了方便后续的使用可以打标签:docker tag xingwei4225/kubedns-amd64:1.9 gcr.io/kubedns-amd64:1.9
  3. 通过docker images进行查看:

通过dockerhub访问gcr.io镜像

以上就是使用dockerhub访问gcr等仓库的过程。