104 lines
3.0 KiB
Bash
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
|