当我们需要在内网registry仓库添加镜像或是更新镜像时,常规流程需要 :
1、在有 docker 环境的机器上 pull 镜像;
2、通过 docker save 保存镜像为离线包;
3、拷贝离线包到内网 load;
4、修改镜像标签;
5、push 到私有仓库;
更新一两个镜像还好,如果需要一次更新多个镜像就需要非常多的时间,而且很多时候服务器不通互联网还没有 docker 环境来拉取镜像;
下面介绍一个超图云原生镜像更新工具supermap-images-update-tools,通过工具我们可以一次批量更新多个镜像,而且不需要安装 docker 环境。
工具可以在文末获取
一、拉取镜像
1、解压工具包
解压完成后目录结构如下:
2、填写更新的镜像列表
编辑images-list.txt 文件,填写需要更新的镜像名称与地址
下面以common-dashboard-api,common-dashboard-ui 为例演示;
3、执行images-pull 拉取镜像
Winndows下直接双击 images-pull.bat 运行即可
Linux下执行脚本:
chmod +x images-pull.sh && ./images-pull.sh
命令执行完会在当前目录生成 supermap-images.tar.gz文件
二、导入镜像到指定仓库
1、拷贝文件到内网
将supermap-images.tar.gz复制到部署云原生GIS的K8s任一节点
2、解压文件
tar -zxf supermap-images.tar.gz
3、导入镜像到指定仓库
cd supermap-images/
chmod +x ./images-push.sh && ./images-push.sh <registry>
# <registry>为必填参数,需要替换为要导入镜像的仓库地址:比如 192.168.112.145:5000
4、每个节点都 pull 一下新镜像
docker pull 仓库IP:5000/common-dashboard-api:11.1.1-240802-amd64
三、在iManager上更新镜像
1、按照images-list.txt文件中服务名称和镜像地址的对应关系,访问 iManager 31100 端口,找到云套件内对应的节点,点击修改镜像,修改为新的地址,点击确定后,会使用新镜像创建 pod。
参数说明:
- 镜像名:服务所用镜像的名称。格式为:镜像仓库/命名空间/镜像名:版本号。
- 拉取策略:选择该服务拉取镜像的策略,默认为 IfNotPresent。有三种镜像拉取策略,分别为Always(总是从镜像仓库拉取最新镜像)、IfNotPresent(如果本地有可用镜像,使用本地镜像,否则从镜像仓库拉取)和Never(使用本地镜像,不从镜像仓库拉取镜像),用户可根据需求选择。
- 拉取密钥:命名空间的密钥,默认情况下没有密钥,需要用户创建。创建密钥后,需要配置拉取密钥才能拉取命名空间中的镜像。
微信搜索【GIS小杨】回复关键词【镜像更新】获取更新工具