前言
说起 Rancher 的离线安装,针对国内环境最大的痛点应该就是下载 Rancher 所需的镜像耗时比较长。Rancher 提供的 rancher-images.txt
有 100+个镜像,压缩后的大小也将近 8G。 从 Rancher release 下载的 rancher-save-images.sh
默认就是从 dockerhub 去拉取镜像。 如果这些镜像都从 dockerhub 下载的话是一个非常艰巨的任务。
为了解决这个问题,Rancher 针对国内环境做了一些优化, 在 rancher-save-images.sh
中增加了 --from-aliyun true
参数, 来支持从国内的阿里云镜像仓库去拉取 rancher-images.txt
里面的镜像。
注意:
--from-aliyun true
参数是从 rancher v2.4.15 和 v2.5.8 开始支持。- 从 Rancher release 中下载的
rancher-save-images.sh
暂不支持--from-aliyun true
参数。- 支持
--from-aliyun true
参数的rancher-save-images.sh
可以从 http://mirror.rancher.cn –>rancher
获得。
Demo
Step-1. 获取支持 --from-aliyun true
参数的 rancher-save-images.sh
浏览器访问 http://mirror.rancher.cn,然后导航到 rancher 目录下,选择对应的 rancher 版本,下载 rancher-save-images.sh
。rancher-images.txt
和 rancher-load-images.sh
从 http://mirror.rancher.cn 或 Rancher release 下载均可,无差别。
Step-2. 从阿里云镜像仓库拉取镜像并打包
root@ip-172-31-21-94:~/image# ./rancher-save-images.sh -h
USAGE: ./rancher-save-images.sh [--image-list rancher-images.txt] [--images rancher-images.tar.gz] [--from-aliyun true]
[-l|--image-list path] text file with list of images; one image per line.
[-i|--images path] tar.gz generated by docker save.
[--from-aliyun true|false] get an image from aliyun
[-h|--help] Usage message
root@ip-172-31-21-94:~/image#
root@ip-172-31-21-94:~/image# ./rancher-save-images.sh --from-aliyun true
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/busybox
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/backup-restore-operator:v1.0.4-rc4
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/cis-operator:v1.0.4
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/configmap-reload:v0.3.0-rancher4
Image pull success: registry.cn-hangzhou.aliyuncs.com/rancher/coredns-coredns:1.6.2
...
从以上日志中可以看出使用 --from-aliyun true
指定了从阿里云镜像仓库去拉取镜像,速度相比从 dockerhub 拉镜像要快了 N 倍。
脚本执行成功后会在当前目录生成 rancher-images.tar.gz
的镜像压缩包。
Step-3. 推送镜像到私有镜像库
这一步,你将使用脚本将文件 rancher-images.tar.gz
中的镜像上传到您自己的私有镜像库。
文件 rancher-images.txt
、 rancher-images.tar.gz
应该和 rancher-load-images.sh
脚本的同一目录下。
- 登录私有镜像库
docker login harbor.kingsd.top
- 推送镜像
./rancher-load-images.sh --registry harbor.kingsd.top
等待执行成功后,就可以到私有镜像仓库中查看到所有 rancher 需要的镜像已经上传。
后记
本文的这些操作步骤和官网的离线安装 基本相同,只不过本文中的 rancher-save-images.sh
是从 http://mirror.rancher.cn 下载,并且在执行 rancher-save-images.sh
时增加了 --from-aliyun true
参数来指定从阿里云镜像仓库下载。
如果在国内环境离线安装 Rancher,推荐使用本文提到的这种方式,可以大大的提升效率。