https://dokuwiki.nanokey.tech/_media/docker:comand:docker_complete_removal.tar
Установка в один клик
cd ~ wget "https://dokuwiki.nanokey.tech/_media/docker:comand:docker_complete_removal.tar" -O docker_complete_removal.tar tar -xvf docker_complete_removal.tar chmod +x docker_complete_removal.sh ./docker_complete_removal.sh
Полное удаление Docker и Docker Compose
Описание
Автоматизированный скрипт для полного удаления Docker, Docker Compose и всех связанных компонентов с Linux-системы. Скрипт выполняет комплексную очистку, включая контейнеры, образы, тома, сети, системные файлы и конфигурации.
Назначение
Скрипт предназначен для случаев, когда необходимо:
- Полностью переустановить Docker
- Освободить дисковое пространство от всех Docker-компонентов
- Устранить проблемы с поврежденной установкой Docker
- Подготовить систему к чистой установке Docker
Поддерживаемые системы
- Ubuntu/Debian — полная поддержка
- CentOS/RHEL/Fedora — требует раскомментирования соответствующих строк
- Другие Linux-дистрибутивы — может потребовать адаптация команд пакетного менеджера
Что удаляет скрипт
Docker-компоненты
- Все запущенные и остановленные контейнеры
- Все Docker-образы
- Все Docker-тома (volumes)
- Пользовательские Docker-сети
- Кэш Docker-системы
Системные компоненты
- Пакеты Docker (docker-ce, docker-ce-cli, containerd.io)
- Docker Compose
- Системные службы Docker
- Группа пользователей docker
Файлы и директории
/var/lib/docker/ /var/lib/containerd/ /etc/docker/ /var/run/docker.sock ~/.docker/ /usr/local/bin/docker-compose /usr/bin/docker-compose /etc/systemd/system/docker.service.d/
Содержимое скрипта
#!/bin/bash echo "=== Полное удаление Docker и Docker Compose ===" # 1. Остановить все запущенные контейнеры echo "1. Остановка всех контейнеров..." docker ps -q | grep -q . && docker stop $(docker ps -q) || echo "Контейнеры не запущены" # 2. Удалить все контейнеры echo "2. Удаление всех контейнеров..." docker ps -aq | grep -q . && docker rm -vf $(docker ps -aq) || echo "Нет контейнеров для удаления" # 3. Удалить все образы echo "3. Удаление всех образов..." docker images -q | grep -q . && docker rmi -f $(docker images -q) || echo "Нет образов для удаления" # 4. Удалить все тома echo "4. Удаление всех томов..." docker volume ls -q | grep -q . && docker volume rm $(docker volume ls -q) || echo "Нет томов для удаления" # 5. Удалить пользовательские сети echo "5. Удаление пользовательских сетей..." USER_NETWORKS=$(docker network ls --filter "type=custom" -q) if [ -n "$USER_NETWORKS" ]; then docker network rm $USER_NETWORKS else echo "Нет пользовательских сетей для удаления" fi # 6. Полная очистка системы Docker echo "6. Полная очистка системы Docker..." docker system prune -a --volumes -f # 7. Остановить Docker службу echo "7. Остановка Docker службы..." sudo systemctl stop docker sudo systemctl stop docker.socket sudo systemctl stop containerd # 8. Удалить Docker пакеты (для Ubuntu/Debian) echo "8. Удаление Docker пакетов..." sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin # Для CentOS/RHEL/Fedora раскомментируйте следующие строки: # sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-ce docker-ce-cli containerd.io docker-compose-plugin # sudo dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-ce docker-ce-cli containerd.io docker-compose-plugin # 9. Удалить все Docker файлы и директории echo "9. Удаление всех Docker файлов и директорий..." sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd sudo rm -rf /etc/docker sudo rm -rf /var/run/docker.sock sudo rm -rf ~/.docker # 10. Удалить Docker Compose (если установлен отдельно) echo "10. Удаление Docker Compose..." sudo rm -f /usr/local/bin/docker-compose sudo rm -f /usr/bin/docker-compose # 11. Удалить группу docker echo "11. Удаление группы docker..." sudo groupdel docker 2>/dev/null || echo "Группа docker не существует" # 12. Очистка остатков конфигурации echo "12. Очистка остатков конфигурации..." sudo rm -rf /etc/systemd/system/docker.service.d sudo systemctl daemon-reload # 13. Удалить пользователя из группы docker (замените username на ваше имя пользователя) echo "13. Удаление пользователя из группы docker..." sudo deluser $USER docker 2>/dev/null || echo "Пользователь не в группе docker" echo "=== Удаление Docker завершено ===" echo "Перезагрузите систему для полного удаления всех остатков"
Использование
Создание и подготовка скрипта
1. Перейдите в домашний каталог пользователя:
cd ~
2. Создайте файл скрипта с помощью текстового редактора:
nano remove_docker.sh
Или используйте другой редактор по выбору:
vim remove_docker.sh # или gedit remove_docker.sh
3. Скопируйте и вставьте в файл содержимое скрипта (см. раздел «Содержимое скрипта» выше)
4. Сохраните файл:
- В nano: нажмите
Ctrl+O, затемEnter, затемCtrl+X - В vim: нажмите
Esc, введите:wq, нажмитеEnter - В gedit: нажмите
Ctrl+S, затем закройте редактор
5. Назначьте права на выполнение:
chmod +x remove_docker.sh
6. Проверьте, что файл создан и имеет права на выполнение:
ls -la remove_docker.sh
Запуск скрипта
./remove_docker.sh
После выполнения
Рекомендуется перезагрузить систему для полного удаления всех остатков:
sudo reboot
Особенности выполнения
Безопасность
- Скрипт использует проверки существования объектов перед удалением
- Команды с
|| echoпредотвращают остановку скрипта при отсутствии объектов - Флаг
-fобеспечивает принудительное выполнение без интерактивных запросов
Логирование
Скрипт выводит информацию о каждом этапе выполнения:
- Статус операций
- Сообщения об отсутствии объектов для удаления
- Завершение каждого этапа
Адаптация под систему
Для CentOS/RHEL/Fedora раскомментируйте строки:
# sudo yum remove -y docker docker-client... # sudo dnf remove -y docker docker-client...
И закомментируйте строки для Ubuntu/Debian.
Предупреждения
ВНИМАНИЕ: Данный скрипт ПОЛНОСТЬЮ УДАЛЯЕТ все Docker-данные!
Что будет потеряно
- Все контейнеры и их данные
- Все образы (потребуется повторная загрузка)
- Все тома с пользовательскими данными
- Все настройки Docker
Рекомендации перед выполнением
1. Создайте резервные копии важных данных из контейнеров 2. Экспортируйте критически важные образы:
docker save -o image_backup.tar image_name:tag
3. Сохраните docker-compose.yml файлы для восстановления сервисов
Проверка результата
После выполнения скрипта и перезагрузки проверьте полное удаление:
# Проверка команд Docker docker --version docker-compose --version # Проверка процессов ps aux | grep docker # Проверка директорий ls -la /var/lib/docker ls -la /etc/docker # Проверка группы docker getent group docker
Важно: Все команды должны вернуть ошибки или пустые результаты.
Восстановление
После полного удаления для повторной установки Docker:
Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER
CentOS/RHEL/Fedora
sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER
Альтернативные методы
Частичная очистка
Для менее радикальной очистки без удаления Docker:
docker system prune -a --volumes -f
Только удаление пакетов
Для удаления только пакетов без данных:
sudo apt-get remove docker-ce docker-ce-cli containerd.io
Важно: Всегда делайте резервные копии перед полным удалением Docker!