代码 拉取_利用 docker hub 拉取 gcr 镜像

参考官网https://docs.docker.com/docker-hub/

背景

kubernetes需要用到gcr中的镜像,而国内因为网络问题无法从gcr拉取镜像。

原理

无法从国内拉取gcr镜像,那就找一个既能拉取gcr镜像,又能被国内访问到的地方,从那里去拉gcr镜像。类似于代理,而docker hub是一个现成的从国内不需要代理就能访问,也能拉取gcr镜像的地方。

因为docker hub提供了auto build的功能,可以与一个代码仓库绑定,通过向代码仓库提交Dockerfile自动触发docker hubbuild镜像操作。

因此只需要在Dockerfile中写一行FROM gcr.io/google_containers/...并提交的代码库即可。

1 创建 github repository

  • github上创建一个repo作为代码库存放Dockerfile
  • 在这个repo中创建一个文件夹kube-proxy-amd64,用于存放kube-proxy-amd64镜像的Dockerfile
  • 同理,创建其它文件夹用于存放其它镜像的Dockerfile

这只是我个人的管理方案,可自行采用其它更合适的方案。

2 创建 docker hub repository

用于存放docker镜像。

需要先注册docker账号,官网地址:https://hub.docker.com/signup

  • 创建一个名叫kube-proxy-amd64reporepo名称将会是镜像名称;
  • 切到Builds页签下绑定到github,配置auto build,如图:

b20ecd7454c47e65b1321bab1bceb7df.png
  • 填写auto build配置,如图:

4c5d5811e24ecdf996be301537a1504c.png
  • 配置完,save即可,然后到github提交代码触发自动构建;
  • 同理,创建其它repo,存放其它镜像,指向同一个github仓库即可。

TIPS

  • 一个repo只能放一种镜像,可以有不同tag,如:push username/nginx:1.14username/kube-proxy-amd64:1.7两个镜像会在docker hubusername用户下产生nginxkube-proxy-amd64两个repo;而push username/folder/nginx:1.14,加一个folder段会push失败。
  • 自动构建规则可使用正则匹配,示例:

494f9d396e58b8bdcdc50718cf22a17e.png
    • Source TypeTag,意思是通过代码库的tag来触发构建;
    • Source/^kube-apiserver-amd64-v([0-9.]+)$/,意思是通过名为kube-apiserver-amd64-v[版本号]tag来触发构建;
    • Docker Tag{1},意思是读取Source项正则表达式的匹配到的第一个参数作为镜像tag
    • Dockerfile location使用默认的Dockerfile,是docker build命令的Dockerfile文件名;
    • Build Context/kube-apiserver-amd64/,意思是使用代码库/kube-apiserver-amd64目录作为docker build命令的context目录;
    • Autobuild勾上规则就会生效。
    • 以上规则的效果是:当我们向代码库push一个名为kube-apiserver-amd64-v1.14.0tag时,会触发当前auto build,使用这个tag的代码/kube-apiserver-amd64目录作为context执行docker build命令,build完成的镜像会push到当前docker hub repo,并打一个1.14.0tag
  • auto build功能以前可能要手动到github上设置webhook,当前已经可以全部自动完成。

3 最终效果

github仓库如下图:

20e899e514e00a7ce05b13cba433ff49.png

docker hub仓库如下图:

9ecfd45c55468402c290013750e903d5.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值