→ Контейнеры по умолчанию временные, их данные исчезают после остановки или удаления.
→ Docker даёт механизмы для постоянного хранения, чтобы данные переживали перезапуски.
→ Самый надёжный способ - использовать Docker volumes.
1. Почему важна устойчивость данных
→ Контейнеры часто пересоздаются при обновлениях и масштабировании.
→ Без персистентности пропадут логи, базы данных, загрузки пользователей, конфиги.
→ Docker volumes решают это, вынося данные за пределы файловой системы контейнера.
2. Варианты хранилищ в Docker
a) Volumes
→ Управляются Docker.
→ Хранятся в /var/lib/docker/volumes/.
→ Не зависят от контейнеров.
→ Лучший выбор для БД и долгоживущих данных.
b) Bind Mounts
→ Привязывают локальную директорию хоста к контейнеру.
→ Удобно в разработке.
→ Менее переносимые.
c) tmpfs Mounts
→ Данные только в памяти.
→ Очень быстрые, но непостоянные.
→ Для временных и чувствительных данных.
3. Что такое Docker Volume
→ Это область постоянного хранения, управляемая Docker.
→ Не удаляется при удалении контейнера.
→ Можно безопасно шарить между контейнерами.
Создать volume:
docker volume create mydata
Использовать:
docker run -v mydata:/app/data nginx
Посмотреть:
docker volume inspect mydata4. Типы Volumes
a) Named Volumes
→ Создаются вручную.
→ Чистая изоляция от файлов системы хоста.
→ Лучший вариант для продакшена.
b) Anonymous Volumes
→ Без имени.
→ Могут удаляться вместе с контейнером.
→ Для временных задач.
5. Преимущества Docker Volumes
→ Данные переживают рестарты.
→ Легко бэкапить и переносить.
→ Работают при обновлении контейнеров.
→ Можно шарить между контейнерами.
→ Docker оптимизирует хранение под производительность.
6. Bind Mounts
→ Позволяют смонтировать директорию хоста:
docker run -v /host/path:/container/path myapp→ Удобно в разработке (горячая перезагрузка кода).
→ В продакшене использовать аккуратно.
7. Persistency в Docker Compose
Compose автоматически управляет volumes.
Пример:
services:
db:
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
→ База сохраняет данные между перезапусками.
8. Бэкап и восстановление Volumes
Бэкап:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar czvf /backup/backup.tar.gz /data
Восстановление:
docker run --rm -v mydata:/data -v $(pwd):/backup alpine tar xzvf /backup/backup.tar.gz -C /
9. Как выбрать способ хранения
→ Volumes - лучший вариант для продакшена.
→ Bind mounts - для разработки.
→ tmpfs - для временных и быстрых операций.
Quick tip
→ Docker volumes - основа устойчивости данных.
→ Даёт гибкость, скорость и надёжность.
→ Незаменимы для баз данных, stateful-сервисов и реальных продакшен-приложений.```



