← Назад в словарь

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 VolumeBind 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