差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
| docker:reset-to-factory [2025/12/25 13:16] – 创建 admin | docker:reset-to-factory [2025/12/26 16:28] (当前版本) – [Docker恢复初始状态] admin | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== Docker恢复初始状态 ====== | ====== Docker恢复初始状态 ====== | ||
| + | |||
| + | ``` | ||
| + | bash <(curl -sSL http:// | ||
| + | |||
| + | ``` | ||
| + | |||
| + | ===== V1.1 ===== | ||
| + | |||
| + | 在原有脚本基础上增加两个可选择的操作模式:一个是完整恢复初始状态(删除所有资源),另一个是保留镜像仅清理容器、网络、卷等其他资源,这样就不用重新拉取镜像了。 | ||
| + | ``` | ||
| + | #!/bin/bash | ||
| + | set -euo pipefail | ||
| + | |||
| + | # 脚本名称:docker-reset-to-factory.sh | ||
| + | # 功能:灵活清理Docker环境,支持两种模式: | ||
| + | # 1. 完整恢复初始状态(删除所有容器、镜像、网络、卷等) | ||
| + | # 2. 保留镜像恢复(仅删除容器、网络、卷,保留镜像) | ||
| + | |||
| + | # 定义颜色输出函数 | ||
| + | function echo_error() { | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | function echo_warn() { | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | function echo_info() { | ||
| + | echo -e " | ||
| + | } | ||
| + | |||
| + | # 检查root权限 | ||
| + | if [ "$(id -u)" -ne 0 ]; then | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | # 检查Docker是否安装并运行 | ||
| + | if ! command -v docker &> /dev/null; then | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | if ! systemctl is-active --quiet docker; then | ||
| + | echo_warn " | ||
| + | systemctl start docker | ||
| + | sleep 3 | ||
| + | fi | ||
| + | |||
| + | # 定义完整清理函数(删除所有资源) | ||
| + | function full_reset() { | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | read -p " | ||
| + | |||
| + | if [ " | ||
| + | echo_info " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # 停止并删除所有容器 | ||
| + | echo_info " | ||
| + | docker stop $(docker ps -aq) 2>/ | ||
| + | echo_info " | ||
| + | docker rm -f $(docker ps -aq) 2>/ | ||
| + | |||
| + | # 删除所有镜像 | ||
| + | echo_info " | ||
| + | docker rmi -f $(docker images -aq) 2>/ | ||
| + | |||
| + | # 删除自定义网络 | ||
| + | echo_info " | ||
| + | docker network rm $(docker network ls | grep -vE ' | ||
| + | |||
| + | # 删除所有卷 | ||
| + | echo_info " | ||
| + | docker volume rm $(docker volume ls -q) 2>/ | ||
| + | |||
| + | # 清理缓存 | ||
| + | echo_info " | ||
| + | docker system prune -af 2>/ | ||
| + | |||
| + | # 重启Docker | ||
| + | echo_info " | ||
| + | systemctl restart docker | ||
| + | |||
| + | echo_info " | ||
| + | echo_info " | ||
| + | echo_info " | ||
| + | } | ||
| + | |||
| + | # 定义保留镜像清理函数(仅清理容器/ | ||
| + | function reset_keep_images() { | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | echo_warn " | ||
| + | read -p " | ||
| + | |||
| + | if [ " | ||
| + | echo_info " | ||
| + | exit 0 | ||
| + | fi | ||
| + | |||
| + | # 停止并删除所有容器 | ||
| + | echo_info " | ||
| + | docker stop $(docker ps -aq) 2>/ | ||
| + | echo_info " | ||
| + | docker rm -f $(docker ps -aq) 2>/ | ||
| + | |||
| + | # 删除自定义网络 | ||
| + | echo_info " | ||
| + | docker network rm $(docker network ls | grep -vE ' | ||
| + | |||
| + | # 删除所有卷 | ||
| + | echo_info " | ||
| + | docker volume rm $(docker volume ls -q) 2>/ | ||
| + | |||
| + | # 清理缓存(不删除镜像) | ||
| + | echo_info " | ||
| + | docker system prune -af --filter " | ||
| + | |||
| + | # 重启Docker | ||
| + | echo_info " | ||
| + | systemctl restart docker | ||
| + | |||
| + | echo_info " | ||
| + | echo_info " | ||
| + | echo_info " | ||
| + | } | ||
| + | |||
| + | # 显示菜单并获取用户选择 | ||
| + | echo_info " | ||
| + | echo_info " | ||
| + | echo_info " | ||
| + | echo " | ||
| + | echo "1. 完整恢复初始状态(删除所有容器、镜像、网络、卷)" | ||
| + | echo "2. 保留镜像清理(仅删除容器、网络、卷,保留镜像)" | ||
| + | echo "3. 退出" | ||
| + | echo_info " | ||
| + | read -p " | ||
| + | |||
| + | # 根据选择执行对应函数 | ||
| + | case $OPTION in | ||
| + | 1) | ||
| + | full_reset | ||
| + | ;; | ||
| + | 2) | ||
| + | reset_keep_images | ||
| + | ;; | ||
| + | 3) | ||
| + | echo_info " | ||
| + | exit 0 | ||
| + | ;; | ||
| + | *) | ||
| + | echo_error " | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | ``` | ||
| + | |||
| + | ===== V1.0 ===== | ||
| 这是一个能够彻底清理 Docker 环境,将其恢复到刚安装完成时初始状态的 bash 脚本,这个脚本需要删除所有容器、镜像、网络、卷等 Docker 相关资源。 | 这是一个能够彻底清理 Docker 环境,将其恢复到刚安装完成时初始状态的 bash 脚本,这个脚本需要删除所有容器、镜像、网络、卷等 Docker 相关资源。 | ||