intermediate
Volumes
Храните или монтируйте данные вне writable layer контейнера для БД, кэшей, локальной разработки и generated-артефактов.
Volumes хранят данные вне writable layer контейнера. Используйте для локальных БД, загруженных файлов в dev, кэшей пакетов или generated-артефактов — но в production проектируйте persistence с backup, ownership и lifecycle явно.
| Тип | Типичное применение | |-----|---------------------| | Named volume | Хранилище под управлением Docker, переносимо между хостами | | Bind mount | Путь хоста для быстрой локальной итерации | | tmpfs | Эфемерные данные в памяти |
# фрагмент compose
services:
postgres:
image: postgres:16
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
На интервью: bind mount vs named volume, очистка при `docker compose down -v` и почему production-БД обычно вне ad-hoc container volumes.
Типовые ошибки: bind mount непредсказуемо перекрывает файлы образа; anonymous volumes живут дольше ожидаемого; нет backup для «временных» dev-данных, ставших важными.
Компромисс — скорость разработки (bind mounts) против переносимости и предсказуемого production storage.
Чеклист:
- Осознанный выбор bind mount или named volume.
- Документированные команды очистки.
- Backup долговечных данных с ясным ownership.
- Не использовать layer контейнера как БД.