目录

目录

将一台机器的 docker 镜像迁移到另外一台机器

目录

bash

#!/bin/bash

# 源机器配置
DEST_USER="your_username"       # 目标机器用户名
DEST_HOST="your_target_host"    # 目标机器 IP 或主机名
DEST_PATH="/home/$DEST_USER/docker_images"  # 目标机器存放路径
EXPORT_PATH="./docker_images"  # 本地存放路径

# 1. 创建本地导出目录
mkdir -p "$EXPORT_PATH"

# 2. 获取所有 Docker 镜像列表
docker images --format '{{.Repository}}:{{.Tag}}' > "$EXPORT_PATH/images.txt"

# 3. 遍历并导出所有镜像
while read -r image; do
    IMAGE_FILE="$EXPORT_PATH/$(echo $image | tr '/' '_' | tr ':' '_').tar"
    echo "正在导出镜像: $image -> $IMAGE_FILE"
    docker save -o "$IMAGE_FILE" "$image"
done < "$EXPORT_PATH/images.txt"

# 4. 传输镜像文件到目标机器
echo "正在传输镜像文件到 $DEST_USER@$DEST_HOST:$DEST_PATH"
ssh "$DEST_USER@$DEST_HOST" "mkdir -p $DEST_PATH"
scp "$EXPORT_PATH"/*.tar "$DEST_USER@$DEST_HOST:$DEST_PATH"

# 5. 在目标机器上加载镜像(远程执行)
echo "在目标机器上加载镜像..."
ssh "$DEST_USER@$DEST_HOST" "cd $DEST_PATH && for tarfile in *.tar; do docker load -i \"\$tarfile\"; done"

# 6. 清理本地镜像文件
echo "清理本地临时文件..."
rm -rf "$EXPORT_PATH"

echo "Docker 镜像传输与加载完成!"