Docker Volume (том для хранения данных)
Docker Volume (том для хранения данных) (Docker Volume) — том Docker
Контекст термина
Термин используется в контексте контейнеризации (Docker, Docker Compose, Kubernetes). Не относится к аудио-громкости или абстрактному «объёму».
Суть в одном предложении
Docker Volume — это механизм постоянного хранения данных вне контейнера, чтобы они не удалялись при его остановке или пересоздании.
Краткое определение
Docker Volume — это управляемое Docker-хранилище, которое подключается к контейнеру и сохраняет данные независимо от его жизненного цикла.
Где используется
- Базы данных в контейнерах
- WordPress и другие CMS
- Файловые загрузки
- Логи
- Кеши
- CI/CD окружения
Архитектурное значение
Контейнер по умолчанию временный.
Если контейнер удалить:
- данные внутри исчезнут
- файловая система контейнера будет уничтожена
Volume решает проблему постоянства данных.
Пример использования
Создание volume:
docker volume create db_data
Запуск контейнера с volume:
docker run -v db_data:/var/lib/mysql mysql:8
Теперь данные MySQL сохраняются вне контейнера.
Volume в Docker Compose
version: "3.9"
services:
db:
image: mysql:8
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
Запуск:
docker compose up -d
Где физически хранятся данные
По умолчанию:
/var/lib/docker/volumes/
Проверка:
docker volume inspect db_data
Volume vs Bind Mount
| Docker Volume | Bind Mount |
|---|---|
| Управляется Docker | Прямое подключение папки |
| Лучше для прод | Лучше для разработки |
| Изолирован от хоста | Привязан к файловой системе |
Bind mount пример:
docker run -v $(pwd):/app my-app
Volume пример:
docker run -v mydata:/app/data my-app
Когда volume обязателен
- MySQL / PostgreSQL
- Redis persistence
- WordPress uploads
- Медиафайлы
- Логи
- Кеши, которые нельзя терять
Без volume база данных в контейнере — архитектурная ошибка.
Удаление volume
Удаление не происходит автоматически при docker rm.
Проверка списка:
docker volume ls
Удаление:
docker volume rm db_data
Полная очистка неиспользуемых томов:
docker volume prune
В Kubernetes
Аналог volume — Persistent Volume (PV) и Persistent Volume Claim (PVC).
Частые ошибки
❌ Запуск базы без volume ❌ Хранение прод-данных в bind mount ❌ Удаление volume при пересборке
Безопасность
Нельзя:
- Давать volume права 777
- Хранить секреты в открытом доступе
- Монтировать системные каталоги без необходимости
Что не является Volume
- Контейнер
- Docker Image
- Виртуальный диск VM
- Облачное хранилище (хотя может быть подключено через драйвер)
Аналоги и связанные термины
- Docker
- Container
- Docker Image
- Bind Mount
- Kubernetes Persistent Volume
- Docker Compose
Пример использования
«MySQL работает в контейнере, но данные хранятся в Docker Volume, поэтому перезапуск не приводит к потере базы.»
Мини-FAQ
Удалится ли volume при удалении контейнера? Нет, если не использовать флаг -v.
Можно ли использовать volume для кода? Технически да, но чаще используется bind mount.
Volume ускоряет приложение? Нет. Он обеспечивает постоянство данных.
Смотри также
- Docker
- Container
- Docker Image
- Docker Compose
- Kubernetes