前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker / Kubernetes 镜像源不可用,教你几招搞定它!

Docker / Kubernetes 镜像源不可用,教你几招搞定它!

作者头像
我的小碗汤
发布2019-10-17 15:19:14
1.4K0
发布2019-10-17 15:19:14
举报

由于众所周知的原因, Docker 官方镜像仓库和 Google 镜像仓库在国内访问速度很慢或者不可用。这样就给我们在部署和使用 Kubernetes 时带来了极大的不便。今天我们就来介绍几种方法,可以让你愉快的解决该问题。

既然是网络方面的问题,解决该问题的思路就很简单了,当然是使用国内可用的镜像源。这里为大家推荐两个好用的国内镜像源:Azure 中国镜像源和中科大镜像源。

Azure 中国镜像源

  • Azure 中国镜像源地址:http://mirror.azure.cn/
  • Azure 中国镜像源 Github 地址:https://github.com/Azure/container-service-for-azure-china
  • 镜像源配置说明:http://mirror.azure.cn/help/gcr-proxy-cache.html

中科大镜像源

  • 中科大镜像源地址:http://mirrors.ustc.edu.cn/
  • 中科大镜像源 Github 地址:https://github.com/ustclug/mirrorrequest
  • 镜像源配置说明:https://github.com/ustclug/mirrorrequest/issues/187

使用镜像源加速 Docker.io 镜像仓库

hub.docker.com 是 Docker 官方镜像仓库,也是我们平时在使用 Docker 过程使用最多的一个镜像仓库。该镜像仓库平时拉取速度通常就只有几十 Kb,非常的慢,使用起来严重影响了工作效率。

既然现在国内有镜像源可用,我们当然直接使国内镜像源便可。下面分别对其使用方法进行介绍。

  • 如果在 Docker 官方仓库拉取的是官方镜像

拉取方法类似如下:

$ docker pull xxx:yyy

使用中科大镜像源,应该类似这样拉取:

$ docker pull docker.mirrors.ustc.edu.cn/library/xxx:yyy

使用 Azure 中国镜像源,应该类似这样拉取:

$ docker pull dockerhub.azk8s.cn/library/xxx:yyy
  • 如果在 Docker 官方仓库拉取的镜像是私有仓库

拉取方法类似如下:

$ docker pull xxx/yyy:zz

使用中科大镜像源,应该类似这样拉取:

$ docker pull docker.mirrors.ustc.edu.cn/xxx/yyy:zz

使用 Azure 中国镜像源,应该类似这样拉取:

$ docker pull dockerhub.azk8s.cn/xxx/yyy:zz
  • 演示一个使用镜像源拉取的实例

下面我们以拉取 mysql:5.7 和 360cloud/wayne 为例:

# 使用中科大镜像源 $ docker pull docker.mirrors.ustc.edu.cn/library/mysql:5.7$ docker pull docker.mirrors.ustc.edu.cn/360cloud/wayne
# 使用 Azure 中国镜像源$ docker pull dockerhub.azk8s.cn/library/mysql:5.7$ docker pull dockerhub.azk8s.cn/360cloud/wayne

注:首次拉取时可能会有 Error:image library/mysql:5.7 not found 类似报错,这说明镜像源中没有缓存该镜像。这个属于正常现像,因为加速镜像都是先从官方镜像仓库进行拉取的,然后缓存到本地。遇到这种情况,你可以尝试多拉取几次即可。

使用镜像源加速 gcr.io 镜像仓库

  • 如果拉取的 Google 镜像仓库中容器镜像类似如下:
$ docer pull gcr.io/xxx/yyy:zzz

使用中科大镜像源,应该类似这样拉取:

$ docker pull gcr.mirrors.ustc.edu.cn/xxx/yyy:zzz

使用 Azure 中国镜像源,应该类似这样拉取:

$ docker pull gcr.azk8s.cn/xxx/yyy:zzz
  • 演示一个使用镜像源拉取的实例

下面我们以拉取 gcr.io/kubernetes-helm/tiller:v2.9.1 为例:

# 使用中科大镜像源 $ docker pull gcr.mirrors.ustc.edu.cn/kubernetes-helm/tiller:v2.9.1
# 使用 Azure 中国镜像源$ docker pull gcr.azk8s.cn/kubernetes-helm/tiller:v2.9.1

使用镜像源加速 k8s.gcr.io 镜像仓库

部署或使用 Kubernetes 时我们会使用到很多相关的镜像,而这些镜像通常会使用 k8s.gcr.io 这个镜像仓库。

其实 k8s.gcr.io 就是 gcr.io/google-containers 下面的容器镜像,这样我们也可以使用中科大镜像源或者 Azure 中国镜像源来对此进行加速。

  • 如果我们拉取的 Kubernetes 所需容器镜像类似以下形式:
$ docker pull k8s.gcr.io/xxx:yyy# 相当于$ docker pull gcr.io/google-containers/xxx:yyy

使用中科大镜像源,应该类似这样拉取:

$ docker pull gcr.mirrors.ustc.edu.cn/google-containers/xxx:yyy

使用 Azure 中国镜像源,应该类似这样拉取:

$ docker pull gcr.azk8s.cn/google-containers/xxx:yyy
  • 演示一个使用镜像源拉取的实例

下面我们以拉取 k8s.gcr.io/addon-resizer:1.8.3 为例:

# 使用中科大镜像源 $ docker pull gcr.mirrors.ustc.edu.cn/google-containers/addon-resizer:1.8.3
# 使用 Azure 中国镜像源$ docker pull gcr.azk8s.cn/google-containers/addon-resizer:1.8.3

使用镜像源加速 quay.io 镜像仓库

部署或使用 Kubernetes 相关周边组件或生态时我们经常会从 quay.io 镜像仓库拉取镜像。quay.io 默认情况下在国内也是不可用的,同样我们也可以通过中科大镜像源和 Azure 中国镜像源进行加速访问。

  • 如果我们拉取的 quay.io 下所需容器镜像类似以下形式:
$ docker pull quay.io/xxx/yyy:zzz

使用中科大镜像源,应该类似这样拉取:

$ docker pull quay.mirrors.ustc.edu.cn/xxx/yyy:zzz

使用 Azure 中国镜像源,应该类似这样拉取:

$ docker pull quay.azk8s.cn/xxx/yyy:zzz
  • 演示一个使用镜像源拉取的实例

下面我们以拉取 quay.io/coreos/kube-state-metrics:v1.5.0 为例:

# 使用中科大镜像源 $ docker pull quay.mirrors.ustc.edu.cn/coreos/kube-state-metrics:v1.5.0
# 使用 Azure 中国镜像源$ docker pull quay.azk8s.cn/coreos/kube-state-metrics:v1.5.0

一些自动化工具

上面我们讲解和演示了如何使用中科大和 Azure 中国镜像源加速拉取镜像的方法。不过这些方法都是手动的,还不够方便。下面将介绍两个小工具,让你可以更加方便和快速的使用这些镜像源。

docker-wrapper

一个 Python 编写的工具脚本,可以替代系统的 Docker 命令,自动从 Azure 中国拉取镜像并自动 Tag 为目标镜像和删除 Azure 镜像,一气呵成。

项目地址:https://github.com/silenceshell/docker_wrapper

docker-wrapper 安装

$ git clone https://github.com/silenceshell/docker-wrapper.git$ sudo cp docker-wrapper/docker-wrapper.py /usr/local/bin/

docker-wrapper 使用

$ docker-wrapper pull k8s.gcr.io/kube-apiserver:v1.14.1$ docker-wrapper pull gcr.io/google_containers/kube-apiserver:v1.14.1$ docker-wrapper pull nginx$ docker-wrapper pull silenceshell/godaddy:0.0.2

azk8spull

一个 Shell 编写的脚本,这个脚本功能和 docker-wrapper 类似。同样可以自动从 Azure 中国拉取镜像并自动 Tag 为目标镜像和删除 Azure 镜像。

项目地址:https://github.com/xuxinkun/littleTools#azk8spull

azk8spull 安装

$ git clone https://github.com/xuxinkun/littleTools$ cd littleTools$ chmod +x install.sh$ ./install.sh

azk8spull 使用

$ azk8spull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.24.1$ azk8spull k8s.gcr.io/pause-amd64:3.1

参考文档

  1. https://www.google.com
  2. https://ieevee.com/tech/2019/03/02/azure-gcr-proxy.html
  3. https://www.cnblogs.com/xuxinkun/p/11025020.html
  4. https://www.ilanni.com/?p=14534
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用镜像源加速 Docker.io 镜像仓库
  • 使用镜像源加速 gcr.io 镜像仓库
  • 使用镜像源加速 k8s.gcr.io 镜像仓库
  • 使用镜像源加速 quay.io 镜像仓库
  • 一些自动化工具
    • docker-wrapper
      • azk8spull
      • 参考文档
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档