Содержание

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-компоненты

Системные компоненты

Файлы и директории

/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. Сохраните файл:

5. Назначьте права на выполнение:

chmod +x remove_docker.sh

6. Проверьте, что файл создан и имеет права на выполнение:

ls -la remove_docker.sh

Запуск скрипта

./remove_docker.sh

После выполнения

Рекомендуется перезагрузить систему для полного удаления всех остатков:

sudo reboot

Особенности выполнения

Безопасность

Логирование

Скрипт выводит информацию о каждом этапе выполнения:

Адаптация под систему

Для CentOS/RHEL/Fedora раскомментируйте строки:

# sudo yum remove -y docker docker-client...
# sudo dnf remove -y docker docker-client...

И закомментируйте строки для Ubuntu/Debian.

Предупреждения

ВНИМАНИЕ: Данный скрипт ПОЛНОСТЬЮ УДАЛЯЕТ все 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!