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!