full_container_scheme/2.docker/docker-tools.sh

104 lines
3.0 KiB
Bash

#!/bin/bash
# Docker 镜像与容器操作脚本
# 导出 Docker 镜像至指定路径
export_image() {
# 参数检查
if [ -z "$1" ] || [ -z "$2" ]; then
echo "用法: 导出镜像 <镜像名称> <导出路径>"
return 1
fi
local image_name="$1"
local export_path="$2"
echo "正在导出镜像 '$image_name' 至 '$export_path'..."
docker save -o "$export_path" "$image_name"
if [ $? -eq 0 ]; then
echo "镜像导出成功。"
else
echo "镜像导出失败。"
return 1
fi
}
# 将运行中的Docker容器导出为新的镜像
export_container_as_image() {
# 参数检查
if [ -z "$1" ] || [ -z "$2" ]; then
echo "用法: 导出容器为镜像 <容器名称或ID> <新镜像名称>"
return 1
fi
local container_name_or_id="$1"
local new_image_name="$2"
echo "正在将运行中的容器 '$container_name_or_id' 导出为镜像 '$new_image_name'..."
docker commit "$container_name_or_id" "$new_image_name"
if [ $? -eq 0 ]; then
echo "容器已成功导出为镜像。"
else
echo "容器导出为镜像失败。"
return 1
fi
}
# 导入 Docker 镜像文件
import_image() {
# 参数检查
if [ -z "$1" ]; then
echo "用法: 导入镜像 <导入文件路径>"
return 1
fi
local import_path="$1"
if [ ! -f "$import_path" ]; then
echo "文件 '$import_path' 不存在。"
return 1
fi
echo "正在从 '$import_path' 导入 Docker 镜像..."
docker load -i "$import_path"
if [ $? -eq 0 ]; then
echo "镜像导入成功。"
else
echo "镜像导入失败。"
return 1
fi
}
# 打印帮助信息
print_help() {
echo -e "\n操作指南:\n"
echo "+---------------------------+---------------------------------------------------------+"
echo "| 功能 | 命令格式 |"
echo "+---------------------------+---------------------------------------------------------+"
echo "| export_image | ./docker-tools.sh 导出镜像 <镜像名称> <导出路径> |"
echo "| export_container | ./docker-tools.sh 导出容器为镜像 <容器名或ID> <新镜像名>|"
echo "| import_image | ./docker-tools.sh 导入镜像 <导入文件路径> |"
echo "+---------------------------+---------------------------------------------------------+"
echo "| 注: | 使用前请确保已赋予权限,如 'chmod +x docker-tools.sh' |"
echo "+---------------------------+---------------------------------------------------------+"
}
# 主程序:解析命令行参数,执行对应功能或打印帮助
case "$1" in
export_image)
shift
export_image "$@"
;;
import_image)
shift
import_image "$@"
;;
export_container_as_image)
shift
export_container "$@"
;;
*)
print_help
;;
esac