当前位置: 首页 > news >正文

容器镜像同步工具image-migrator

1 概述

image-migrator是一个用于容器镜像同步的可执行二进制命令行工具(不依赖于docker命令),能够自动将基于Docker Registry v2镜像仓库(registry、云厂商容器镜像服务、docker hub、Quay、Harbor )中的镜像迁移到基于Docker Registry v2的目标仓库。


2 下载工具

将工具下载至/usr/bin目录,并设置可执行权限。

cd /usr/bin
wget https://ucs-migration.obs.cn-north-4.myhuaweicloud.com/toolkits/image-migrator-linux-amd64
mv image-migrator-linux-amd64 image-migrator
chmod +x image-migrator

3 同步容器镜像

3.1 仓库登录凭证文件

创建一个名称叫auth.json的文件,里面保存各个仓库(可以是仓库,也可以是仓库/namespace)及其账号密码。
下面是一个示例。

cat > /tmp/auth.json << EOF
{"swr.cn-south-1.myhuaweicloud.com/lj": {"username": "********yourusername********","password": "********password********","insecure": true},"swr.cn-south-1.myhuaweicloud.com/migrator": {"username": "********yourusername********","password": "********password********","insecure": true}
}
EOF

3.2 镜像同步规则文件

文件用于描述源端镜像及其目标镜像。key是源端镜像,value是目标镜像。
key不可以为空。
当value为空时,命令行参数必须提供默认的仓库和默认的namespace。
key如果不包含镜像的tag,则表示要同步该仓库的所有tag。
下面是一个示例。

cat > /tmp/images.json << EOF
{"swr.cn-south-1.myhuaweicloud.com/lj/velero": "swr.cn-south-1.myhuaweicloud.com/migrator/velero","swr.cn-south-1.myhuaweicloud.com/lj/nginx": "","swr.cn-south-1.myhuaweicloud.com/lj/pause:3.2": "swr.cn-south-1.myhuaweicloud.com/migrator/pause:3.2","swr.cn-south-1.myhuaweicloud.com/lj/kube-proxy": ""
}
EOF

3.3 执行命令

registry参数表示默认的仓库,namespace参数表示默认的namespace,在目标镜像为空时发生效果。
auth参数用于指定凭证文件,images参数用于指定镜像同步规则文件。
retries参数表示同步一个镜像失败后重试的次数。
workers参数表示工具的并发数,默认是7。

image-migrator \
--workers=10 \
--auth=/tmp/auth.json \
--images=/tmp/images.json \
--namespace=migrator \
--registry=swr.cn-south-1.myhuaweicloud.com \
--retries=2

在这里插入图片描述

4 小结

image-migrator可用一次性同步容器镜像,省去了docker pull、docker tag、docker push等操作,是一个可减少运维操作的便捷小工具。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 海量数据查找最大K个值:数据结构与算法的选择
  • 快速切换淘宝最新镜像源npm
  • 【聊聊AI编程必不可少的NLTK及其punkt、punkt_tab安装】
  • 设计模式 -- 单例设计模式
  • Linux - 探秘/proc/sys/net/ipv4/ip_local_port_range
  • 嵌入式Linux电池管理(TODO)
  • 【SpringCloud】微服务架构演进与Spring Cloud简介
  • EasyExcel 动态表头+表头合并
  • C语言基础——⑩③数据结构——②栈和队列
  • (不用互三)AI绘画工具应该如何选择
  • C语言 | Leetcode C语言题解之第394题字符串解码
  • Spring Framework 学习总结博客
  • 快速入门编写一个Java程序
  • 【mysql】mysql之主从部署以及介绍
  • 无头服务(Headless Service)
  • 【译】JS基础算法脚本:字符串结尾
  • JS 中的深拷贝与浅拷贝
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Android优雅地处理按钮重复点击
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Fundebug计费标准解释:事件数是如何定义的?
  • JavaScript DOM 10 - 滚动
  • SpringBoot几种定时任务的实现方式
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 前端面试之闭包
  • hi-nginx-1.3.4编译安装
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • # 透过事物看本质的能力怎么培养?
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • #预处理和函数的对比以及条件编译
  • ${ }的特别功能
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (function(){})()的分步解析
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)ssm高校实验室 毕业设计 800008
  • (强烈推荐)移动端音视频从零到上手(下)
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (四)js前端开发中设计模式之工厂方法模式
  • (原創) 物件導向與老子思想 (OO)
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .Net Core和.Net Standard直观理解
  • .NET MVC第五章、模型绑定获取表单数据
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net6Api后台+uniapp导出Excel
  • .net下简单快捷的数值高低位切换
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [100天算法】-目标和(day 79)
  • [2010-8-30]
  • [AI 大模型] 百度 文心一言
  • [ARC066F]Contest with Drinks Hard
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [BIZ] - 1.金融交易系统特点
  • [BZOJ1008][HNOI2008]越狱