当前位置: 首页 > 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等操作,是一个可减少运维操作的便捷小工具。

http://www.lryc.cn/news/439653.html

相关文章:

  • 嵌入式系统中的u-boot、kernel、rootfs的区别与关系
  • K8s1.28 部署Dashboard获取登录信息
  • 智能化大数据平台引领企业迈向精准决策时代
  • 1.3 计算机网络的分类
  • 深入剖析protobuf.js之Field类:内部机制、使用实践与高级应用指南
  • docker挂载宿主机文件run命令启动报错
  • Python实现 Socket.IO 的在线游戏场景
  • A+B P1001 A+B Problem
  • git编译安装报错
  • 知识|智能网联汽车多域电子电气架构会如何发展?
  • 【C++算法】位运算
  • PMP--一模--解题--101-110
  • 为了有了ReentrantLock还需要ReentrantReadWriteLock?
  • Vite打包zip并改名为md5sum哈希案例
  • 并行编程实战——TBB中节点的数据结构
  • ClickHouse总结
  • Guava中Preconditions校验
  • 容器技术--Docker常用命令
  • 【Linux】网络层协议——IP
  • 【Echarts】vue3打开echarts的正确方式
  • 一些学习three的小记录
  • Porcupine - 语音关键词唤醒引擎
  • Golang | Leetcode Golang题解之第409题最长回文串
  • 【C++】STL数据结构最全函数详解2-向量vector
  • 阿里云 Quick BI使用介绍
  • LLMs之SuperPrompt:SuperPrompt的简介、使用方法、案例应用之详细攻略
  • Java中的Web服务开发:RESTful API的最佳实践
  • Linux创建虚拟磁盘并分区格式化
  • 面试经典150题——最后一个单词的长度
  • 【C++】入门基础(上)