docker buildx进行多架构镜像仓库迁移

创建脚本

bash 复制代码
vim multiarch_image_migrator.sh
chmod +x multiarch_image_migrator.sh

填写如下内容:

bash 复制代码
#!/bin/bash
# 功能:使用 docker buildx 迁移多架构镜像到另一个仓库
# 用法:./multiarch_image_migrator.sh <源镜像> <目标镜像>

set -e  # 遇到错误立即退出

# 显示帮助信息的函数
show_usage() {
    echo "用法: $0 <源镜像> <目标镜像>"
    echo ""
    echo "示例:"
    echo "  $0 registry.com/old/image:tag new-registry.com/new/image:tag"
    echo ""
    echo "选项:"
    echo "  -h, --help     显示此帮助信息"
    exit 0
}

# 参数解析
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
    show_usage
fi

# 检查参数数量
if [ $# -ne 2 ]; then
    echo "错误:需要指定源镜像和目标镜像两个参数。"
    show_usage
fi

SOURCE_IMAGE="$1"
TARGET_IMAGE="$2"

# 脚本开始
echo "========================================="
echo "开始迁移多架构镜像"
echo "========================================="
echo "源镜像:   $SOURCE_IMAGE"
echo "目标镜像: $TARGET_IMAGE"
echo "-----------------------------------------"

# 1. 检查 docker buildx 是否可用
if ! command -v docker &> /dev/null || ! docker buildx version &> /dev/null; then
    echo "❌ 错误:docker 或 docker buildx 不可用,请确保 Docker 已安装且 buildx 插件可用。"
    exit 1
fi

# 2. 检查源镜像是否存在并可访问
echo "步骤1: 检查源镜像..."
if ! docker buildx imagetools inspect "$SOURCE_IMAGE" > /dev/null 2>&1; then
    echo "❌ 源镜像不存在或无法访问: $SOURCE_IMAGE"
    exit 1
fi
echo "✅ 源镜像检查完成"
echo "-----------------------------------------"

# 3. 执行镜像迁移(复制 + 推送)
echo "步骤2: 开始复制镜像到目标仓库(此过程会自动推送)..."
echo "这可能需要一些时间,请耐心等待..."
if docker buildx imagetools create --tag "$TARGET_IMAGE" "$SOURCE_IMAGE"; then
    echo "✅ 镜像迁移成功!"
else
    echo "❌ 镜像迁移失败"
    exit 1
fi

echo "-----------------------------------------"

# 4. 验证目标镜像
echo "步骤3: 验证目标镜像..."
if docker buildx imagetools inspect "$TARGET_IMAGE" > /dev/null 2>&1; then
    echo "✅ 目标镜像验证成功,已存在于目标仓库。"
    echo "-----------------------------------------"
    echo "目标镜像详细信息:"
    docker buildx imagetools inspect "$TARGET_IMAGE"
else
    echo "❌ 目标镜像验证失败,可能未成功推送。"
    exit 1
fi

echo "========================================="
echo "🎉 所有操作成功完成!"

使用方式

bash 复制代码
# 迁移镜像
./multiarch_image_migrator.sh docker.io/library/nginx:latest myregistry.com/mirror/nginx:latest
相关推荐
海宇AI6 分钟前
零信任架构实战:基于海宇车型识别精准构建自动化车队评估微服务
java·人工智能·架构·自动化
谢亮_vipxieliang10 分钟前
私有镜像仓库:Registry、Harbor 与镜像同步实战
网络·docker·容器
硅基手札39 分钟前
【risc-v专栏03】CSR 速查与特权架构 M/S/U
单片机·架构·risc-v
一木 之林1 小时前
多模态大模型一统精讲 NLP 和 CV:从 ViT、CLIP 到 BLIP、LLaVA 的三段式统一架构
人工智能·自然语言处理·架构
157092511341 小时前
Android 架构模式详解:从 MVC、MVP 到 MVVM
android·架构·mvc
AOI小白新手上路1 小时前
韦东山《ARM 架构与编程》3-3 IMX6ULL 的 GPIO 操作方法 · 学习笔记
arm开发·学习·架构
2601_962219011 小时前
操作日志全留存架构:万象生鲜系统生鲜业务合规审计底层实现方案
微服务·云原生·架构
张彦峰ZYF1 小时前
查询接口调优:无缓存、强实时约束下的系统化性能工程
架构·业务缓存与数据库缓冲机制·强一致、读己之写·读己之写和有界陈旧语义·端到端延迟分段·一致性路由
海宇数据2 小时前
零信任架构实战:基于海宇车型识别精准构建自动化违章处理网关
运维·人工智能·架构·自动化
CubeSandbox2 小时前
沙箱是选项,不是标配:花椒 Agent 平台的架构思考与 Cube 实践
大数据·人工智能·架构