Показать страницуИстория страницыСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. https://dokuwiki.nanokey.tech/_media/docker:comand:docker_complete_removal.tar Установка в один клик\\ <code> 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 </code> ====== Полное удаление 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 ==== Файлы и директории ==== <code> /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/ </code> ===== Содержимое скрипта ===== <code bash> #!/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 "Перезагрузите систему для полного удаления всех остатков" </code> ===== Использование ===== ==== Создание и подготовка скрипта ==== 1. Перейдите в домашний каталог пользователя: <code bash> cd ~ </code> 2. Создайте файл скрипта с помощью текстового редактора: <code bash> nano remove_docker.sh </code> //Или используйте другой редактор по выбору:// <code bash> vim remove_docker.sh # или gedit remove_docker.sh </code> 3. Скопируйте и вставьте в файл содержимое скрипта (см. раздел "Содержимое скрипта" выше) 4. Сохраните файл: * В **nano**: нажмите ''Ctrl+O'', затем ''Enter'', затем ''Ctrl+X'' * В **vim**: нажмите ''Esc'', введите '':wq'', нажмите ''Enter'' * В **gedit**: нажмите ''Ctrl+S'', затем закройте редактор 5. Назначьте права на выполнение: <code bash> chmod +x remove_docker.sh </code> 6. Проверьте, что файл создан и имеет права на выполнение: <code bash> ls -la remove_docker.sh </code> ==== Запуск скрипта ==== <code bash> ./remove_docker.sh </code> ==== После выполнения ==== Рекомендуется перезагрузить систему для полного удаления всех остатков: <code bash> sudo reboot </code> ===== Особенности выполнения ===== ==== Безопасность ==== * Скрипт использует проверки существования объектов перед удалением * Команды с ''|| echo'' предотвращают остановку скрипта при отсутствии объектов * Флаг ''-f'' обеспечивает принудительное выполнение без интерактивных запросов ==== Логирование ==== Скрипт выводит информацию о каждом этапе выполнения: * Статус операций * Сообщения об отсутствии объектов для удаления * Завершение каждого этапа ==== Адаптация под систему ==== Для **CentOS/RHEL/Fedora** раскомментируйте строки: <code bash> # sudo yum remove -y docker docker-client... # sudo dnf remove -y docker docker-client... </code> И закомментируйте строки для Ubuntu/Debian. ===== Предупреждения ===== **ВНИМАНИЕ: Данный скрипт ПОЛНОСТЬЮ УДАЛЯЕТ все Docker-данные!** ==== Что будет потеряно ==== * Все контейнеры и их данные * Все образы (потребуется повторная загрузка) * Все тома с пользовательскими данными * Все настройки Docker ==== Рекомендации перед выполнением ==== 1. **Создайте резервные копии** важных данных из контейнеров 2. **Экспортируйте** критически важные образы: <code bash> docker save -o image_backup.tar image_name:tag </code> 3. **Сохраните** docker-compose.yml файлы для восстановления сервисов ===== Проверка результата ===== После выполнения скрипта и перезагрузки проверьте полное удаление: <code bash> # Проверка команд Docker docker --version docker-compose --version # Проверка процессов ps aux | grep docker # Проверка директорий ls -la /var/lib/docker ls -la /etc/docker # Проверка группы docker getent group docker </code> **Важно:** Все команды должны вернуть ошибки или пустые результаты. ===== Восстановление ===== После полного удаления для повторной установки Docker: ==== Ubuntu/Debian ==== <code bash> curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker $USER </code> ==== CentOS/RHEL/Fedora ==== <code bash> sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER </code> ===== Альтернативные методы ===== ==== Частичная очистка ==== Для менее радикальной очистки без удаления Docker: <code bash> docker system prune -a --volumes -f </code> ==== Только удаление пакетов ==== Для удаления только пакетов без данных: <code bash> sudo apt-get remove docker-ce docker-ce-cli containerd.io </code> **Важно:** Всегда делайте резервные копии перед полным удалением Docker! docker/comand/01-del_docker.txt Последнее изменение: 2025/08/13 14:11 — admin