docker:reset-to-factory

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
docker:reset-to-factory [2025/12/25 13:16] – 创建 admindocker:reset-to-factory [2025/12/26 16:28] (当前版本) – [Docker恢复初始状态] admin
行 1: 行 1:
 ====== Docker恢复初始状态 ====== ====== Docker恢复初始状态 ======
 +
 +```
 +bash <(curl -sSL http://flush.119he.com/docker/docker-reset-to-factory.sh)
 +
 +```
 +
 +===== V1.1 =====
 +
 +在原有脚本基础上增加两个可选择的操作模式:一个是完整恢复初始状态(删除所有资源),另一个是保留镜像仅清理容器、网络、卷等其他资源,这样就不用重新拉取镜像了。
 +```
 +#!/bin/bash
 +set -euo pipefail
 +
 +# 脚本名称:docker-reset-to-factory.sh
 +# 功能:灵活清理Docker环境,支持两种模式:
 +#       1. 完整恢复初始状态(删除所有容器、镜像、网络、卷等)
 +#       2. 保留镜像恢复(仅删除容器、网络、卷,保留镜像)
 +
 +# 定义颜色输出函数
 +function echo_error() {
 +    echo -e "\033[31m[ERROR] $1\033[0m"
 +}
 +
 +function echo_warn() {
 +    echo -e "\033[33m[WARN] $1\033[0m"
 +}
 +
 +function echo_info() {
 +    echo -e "\033[32m[INFO] $1\033[0m"
 +}
 +
 +# 检查root权限
 +if [ "$(id -u)" -ne 0 ]; then
 +    echo_error "该脚本需要以root权限运行,请使用 sudo 执行!"
 +    exit 1
 +fi
 +
 +# 检查Docker是否安装并运行
 +if ! command -v docker &> /dev/null; then
 +    echo_error "未检测到Docker,请先安装Docker!"
 +    exit 1
 +fi
 +
 +if ! systemctl is-active --quiet docker; then
 +    echo_warn "Docker服务未运行,正在启动Docker..."
 +    systemctl start docker
 +    sleep 3
 +fi
 +
 +# 定义完整清理函数(删除所有资源)
 +function full_reset() {
 +    echo_warn "============================================="
 +    echo_warn "警告:该操作将彻底清理以下所有Docker资源:"
 +    echo_warn "  1. 所有运行/停止的容器(包括数据卷)"
 +    echo_warn "  2. 所有本地镜像"
 +    echo_warn "  3. 所有自定义网络(保留默认网络)"
 +    echo_warn "  4. 所有未使用的卷和构建缓存"
 +    echo_warn "============================================="
 +    read -p "确认要执行完整清理吗?(输入 YES 确认,其他任意键取消):" CONFIRM
 +
 +    if [ "$CONFIRM" != "YES" ]; then
 +        echo_info "操作已取消!"
 +        exit 0
 +    fi
 +
 +    # 停止并删除所有容器
 +    echo_info "正在停止所有运行中的容器..."
 +    docker stop $(docker ps -aq) 2>/dev/null || echo_info "当前无运行中的容器"
 +    echo_info "正在删除所有容器..."
 +    docker rm -f $(docker ps -aq) 2>/dev/null || echo_info "当前无容器可删除"
 +
 +    # 删除所有镜像
 +    echo_info "正在删除所有镜像..."
 +    docker rmi -f $(docker images -aq) 2>/dev/null || echo_info "当前无镜像可删除"
 +
 +    # 删除自定义网络
 +    echo_info "正在删除所有自定义网络..."
 +    docker network rm $(docker network ls | grep -vE 'bridge|host|none' | awk 'NR>1 {print $1}') 2>/dev/null || echo_info "当前无自定义网络可删除"
 +
 +    # 删除所有卷
 +    echo_info "正在删除所有卷..."
 +    docker volume rm $(docker volume ls -q) 2>/dev/null || echo_info "当前无卷可删除"
 +
 +    # 清理缓存
 +    echo_info "正在清理Docker缓存和未使用资源..."
 +    docker system prune -af 2>/dev/null
 +
 +    # 重启Docker
 +    echo_info "正在重启Docker服务..."
 +    systemctl restart docker
 +
 +    echo_info "============================================="
 +    echo_info "Docker已成功恢复到初始安装状态(所有资源已清理)!"
 +    echo_info "============================================="
 +}
 +
 +# 定义保留镜像清理函数(仅清理容器/网络/卷)
 +function reset_keep_images() {
 +    echo_warn "============================================="
 +    echo_warn "警告:该操作将清理以下Docker资源(保留镜像):"
 +    echo_warn "  1. 所有运行/停止的容器(包括数据卷)"
 +    echo_warn "  2. 所有自定义网络(保留默认网络)"
 +    echo_warn "  3. 所有未使用的卷和构建缓存"
 +    echo_warn "  4. 保留所有本地镜像文件"
 +    echo_warn "============================================="
 +    read -p "确认要执行保留镜像的清理吗?(输入 YES 确认,其他任意键取消):" CONFIRM
 +
 +    if [ "$CONFIRM" != "YES" ]; then
 +        echo_info "操作已取消!"
 +        exit 0
 +    fi
 +
 +    # 停止并删除所有容器
 +    echo_info "正在停止所有运行中的容器..."
 +    docker stop $(docker ps -aq) 2>/dev/null || echo_info "当前无运行中的容器"
 +    echo_info "正在删除所有容器..."
 +    docker rm -f $(docker ps -aq) 2>/dev/null || echo_info "当前无容器可删除"
 +
 +    # 删除自定义网络
 +    echo_info "正在删除所有自定义网络..."
 +    docker network rm $(docker network ls | grep -vE 'bridge|host|none' | awk 'NR>1 {print $1}') 2>/dev/null || echo_info "当前无自定义网络可删除"
 +
 +    # 删除所有卷
 +    echo_info "正在删除所有卷..."
 +    docker volume rm $(docker volume ls -q) 2>/dev/null || echo_info "当前无卷可删除"
 +
 +    # 清理缓存(不删除镜像)
 +    echo_info "正在清理Docker缓存和未使用资源(保留镜像)..."
 +    docker system prune -af --filter "until=0h" 2>/dev/null
 +
 +    # 重启Docker
 +    echo_info "正在重启Docker服务..."
 +    systemctl restart docker
 +
 +    echo_info "============================================="
 +    echo_info "Docker已清理完成(所有镜像已保留)!"
 +    echo_info "============================================="
 +}
 +
 +# 显示菜单并获取用户选择
 +echo_info "============================================="
 +echo_info "Docker 环境清理工具"
 +echo_info "============================================="
 +echo "请选择要执行的操作:"
 +echo "1. 完整恢复初始状态(删除所有容器、镜像、网络、卷)"
 +echo "2. 保留镜像清理(仅删除容器、网络、卷,保留镜像)"
 +echo "3. 退出"
 +echo_info "============================================="
 +read -p "请输入选项编号(1/2/3):" OPTION
 +
 +# 根据选择执行对应函数
 +case $OPTION in
 +    1)
 +        full_reset
 +        ;;
 +    2)
 +        reset_keep_images
 +        ;;
 +    3)
 +        echo_info "已退出脚本,未执行任何操作。"
 +        exit 0
 +        ;;
 +    *)
 +        echo_error "无效的选项!请输入 1、2 或 3。"
 +        exit 1
 +        ;;
 +esac
 +```
 +
 +===== V1.0 =====
  
 这是一个能够彻底清理 Docker 环境,将其恢复到刚安装完成时初始状态的 bash 脚本,这个脚本需要删除所有容器、镜像、网络、卷等 Docker 相关资源。 这是一个能够彻底清理 Docker 环境,将其恢复到刚安装完成时初始状态的 bash 脚本,这个脚本需要删除所有容器、镜像、网络、卷等 Docker 相关资源。
  • docker/reset-to-factory.1766639769.txt.gz
  • 最后更改: 2025/12/25 13:16
  • admin