docker 复制远程镜像本地并创建容器

#!/bin/bash
# 简化版Docker镜像迁移脚本
# xx.sh root@127.0.0.1 xxx:latest containername
set -e

#if [ $# -ne 3 ]; then
#    echo "用法: $0 <远程主机> <镜像名> <容器名>"
#    echo "示例: $0 user@example.com nginx:latest my-nginx"
#    exit 1
#fi

REMOTE_HOST="root@127.0.0.1"
IMAGE_NAME="test:latest"
CONTAINER_NAME="$3"
IMAGE_FILE="/tmp/${IMAGE_NAME//:/_}.tar"

echo "正在从远程服务器导出镜像..."
ssh "$REMOTE_HOST" "rm -f $IMAGE_FILE"
ssh "$REMOTE_HOST" "docker save -o $IMAGE_FILE $IMAGE_NAME"

echo "正在复制镜像文件到本地..."
sudo rm "$IMAGE_FILE"
scp "$REMOTE_HOST:$IMAGE_FILE" "$IMAGE_FILE"

echo "正在清理远程临时文件..."
ssh "$REMOTE_HOST" "rm -f $IMAGE_FILE"

echo "正在导入镜像到本地Docker..."
sudo docker load -i "$IMAGE_FILE"

echo "正在创建容器..."
sudo docker stop  harper-admin-product
sudo docker rm  harper-admin-product
sudo docker run -v /server/api/nocode_product/appsettings.json:/app/appsettings.Production.json -e TZ=Asia/Shanghai -d -p 8101:8080 --name harper-admin-product --restart always --network local harper-admin:latest


echo "迁移完成!"
rm -f "$IMAGE_FILE"

posted @ 2025-11-28 19:46  Hey,Coder!  阅读(0)  评论(0)    收藏  举报