Способы удаления томов Docker

Часто сталкивался с переполнением диска на рабочем ПК. Поиск приводил меня к выводу, что за годы я накапливаю огромное количество томов контейнеров, которыми никогда не буду пользоваться. Собрал все сценарии удаления томов (volumes) Docker.

1. Удаление неиспользуемых томов

# Удалить ВСЕ неиспользуемые тома
docker volume prune

# С подтверждением (по умолчанию)
docker volume prune -a

# Без подтверждения
docker volume prune -f

2. Удаление конкретного тома

# Посмотреть список томов
docker volume ls

# Удалить конкретный том
docker volume rm <volume_name>

# Пример
docker volume rm myapp_data

3. Удаление томов при удалении контейнера

# Удалить контейнер с его томами
docker rm -v <container_name_or_id>

# Пример
docker rm -v mycontainer

4. Удаление всех томов (осторожно!)

# Удалить ВСЕ тома (даже используемые!)
docker volume rm $(docker volume ls -q)

# Сначала остановить все контейнеры
docker stop $(docker ps -aq)
docker rm -v $(docker ps -aq)
docker volume rm $(docker volume ls -q)

5. Команда для просмотра информации о томах

# Детальная информация о томах
docker volume inspect <volume_name>

# Показать дисковое пространство томов
docker system df

6. Удаление через Docker Compose

# Удалить тома, указанные в docker-compose.yml
docker-compose down -v

# Удалить все (контейнеры, сети, тома)
docker-compose down --volumes --rmi all

Важные моменты:

  • docker volume prune удаляет только тома, которые не используются ни одним контейнером
  • -v флаг при удалении контейнера удаляет анонимные тома, но не именованные
  • Данные в томах невосстановимы после удаления
  • Проверьте, какие контейнеры используют тома: docker ps -a --filter volume=<volume_name>

Рекомендуемый порядок очистки:

# 1. Остановить и удалить контейнеры
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)

# 2. Удалить неиспользуемые тома
docker volume prune -f

# 3. Проверить результат
docker volume ls