下载外网容器镜像

下载外网容器镜像

背景

由于不可描述原因,下载外网镜像时,总会不可下载、或者超时下载。本文将提供以下几种方法来下载外网镜像(以下载k8s.gcr.io/kube-apiserver-amd64:v1.10.0为例):

方法一:挂载梯子,设置docker daemon代理

将梯子的代理地址设置到docker daemon的配置文件中,详细内容可参考我之前写的这篇文章

优点:简单

缺点:受限于梯子的速度和稳定性,很可能会下载到一半超时。

方法二:薅阿里云羊毛

首先必须得有阿里云的账号,然后在阿里云的代码管理上,创建项目,并创建一个Dockerfile。内容如下:

FROM k8s.gcr.io/kube-apiserver-amd64:v1.10.0

然后在阿里云容器镜像服务的个人实例里,创建一个镜像仓库,并在镜像仓库的构建器里绑定刚才的代码管理。构建时选中“海外镜像构建”,然后触发构建镜像即可。

优点:不用FQ。编辑代码后,可自动触发拉取镜像。

缺点:阿里云做了限制,一段时间内的构建次数有限;拉取后的镜像需要修改tag,digest值也会变更。

方法三:挂载梯子,使用google cloud shell

谷歌云,创建项目后,即可打开免费的Cloud Shell终端,可以通过docker命令直接下载对应的镜像,后面推送到自己的仓库,也可以save成tar包,再下载到本地。

优点:操作和shell界面完全一致。

缺点:Cloud shell下,推动到国内的镜像源会很慢,save成tar包后,下载到本地的速度,也完全取决于梯子的速度。

方法四:使用github上hub-mirror项目

可直接使用hub-mirror项目,具体方法可参考README文件。只需要在issue中创建一个新issue,并按照模板提交。即可触发github的Action来自动的拉取镜像,并推送到目的仓库,最后会在issue的留言板里展示最终的镜像名称。

也可以将这个hub-mirror克隆到自己的项目里,稍作配置,提交issue后,镜像会推送到自己的镜像仓库(DockerHub、阿里云、华为云等)里,更加方便。

优点:能访问github即可;可同时下载多个镜像。

缺点:暂不支持镜像名后带digest的访问方式。

总结

个人常用第四种方法,第四种方法失败时会使用第三种方法。

没梯子的情况下,还是用第二种吧,就是经常会失败。

方法 优点 缺点
挂载梯子,设置docker daemon代理 简单 受限于梯子的速度和稳定性,很可能会下载到一半超时。
薅阿里云羊毛 不用FQ。编辑代码后,可自动触发拉取镜像。 阿里云做了限制,一段时间内的构建次数有限;拉取后的镜像需要修改tag,digest值也会变更。
挂载梯子,使用google cloud shell 操作和shell界面完全一致。 Cloud shell下,推动到国内的镜像源会很慢,save成tar包后,下载到本地的速度,也完全取决于梯子的速度。
使用github上hub-mirror项目 能访问github即可;可同时下载多个镜像。 暂不支持镜像名后带digest的访问方式。

热门相关:倾心之恋:总裁的妻子   愈合伴侣   外卖曝光:赤裸诱惑   修真界败类   善良的姐夫