#!/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