下载外网容器镜像
背景
由于不可描述原因,下载外网镜像时,总会不可下载、或者超时下载。本文将提供以下几种方法来下载外网镜像(以下载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的访问方式。 |
文章来源: 博客园
- 还没有人评论,欢迎说说您的想法!