将一台机器的 docker 镜像迁移到另外一台机器
目录
#!/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 镜像传输与加载完成!"