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 контейнера как БД.