- 目录: 需要将运行中的docker 容器批量出,并在新的主机上批量导入。
- 创建批量导出脚本
export_docker_images.sh
#!/bin/bash
if ! docker info > /dev/null 2>&1; then
echo "Docker 似乎没有运行。请确保 Docker 正在运行。"
exit 1
fi
container_ids=$(docker ps -q)
if [ -z "$container_ids" ]; then
echo "没有运行中的 Docker 容器。"
exit 0
fi
for container_id in $container_ids; do
image_name=$(docker inspect --format='{{.Config.Image}}' $container_id)
output_file="${container_id}_$(echo $image_name | sed 's/[^a-zA-Z0-9_.-]/_/g').tar"
echo "导出镜像 $image_name 到文件 $output_file..."
docker save -o "$output_file" "$image_name"
if [ $? -eq 0 ]; then
echo "镜像 $image_name 成功导出到 $output_file"
else
echo "导出镜像 $image_name 到 $output_file 失败"
fi
done
echo "所有运行中的容器镜像已导出完毕。"
- 给脚本添加执行权限:
chmod +x export_docker_images.sh
- 运行脚本:
./export_docker_images.sh
- 创建批量导入脚本
import_docker_images.sh
#!/bin/bash
image_dir="./images"
if [ ! -d "$image_dir" ]; then
echo "目录 $image_dir 不存在。请确保镜像文件存放在正确的目录。"
exit 1
fi
image_files=$(ls "$image_dir"/*.tar 2> /dev/null)
if [ -z "$image_files" ]; then
echo "目录 $image_dir 中没有找到任何 tar 文件。"
exit 0
fi
for image_file in $image_files; do
echo "正在导入镜像文件 $image_file..."
docker load -i "$image_file"
if [ $? -eq 0 ]; then
echo "镜像文件 $image_file 导入成功"
else
echo "镜像文件 $image_file 导入失败"
fi
done
echo "所有镜像文件已导入完毕。"
- 给脚本添加执行权限:
chmod +x import_docker_images.sh
- 运行脚本:
./import_docker_images.sh