Этот вопрос проверяет понимание того, как контейнеры изолируют файловую систему и как данные живут внутри и вне контейнера.
Контейнер использует собственную изолированную файловую систему, основанную на слоях образа. Эти слои в основном доступны только для чтения, а поверх них создаётся тонкий слой записи контейнера. Данные, записанные в этот слой, пропадут после удаления контейнера. Для сохранения данных используют volume или bind mount.
Контейнер не имеет “своего диска” в привычном смысле, он работает с файловой системой, собранной из слоёв.
Файловая система контейнера — это объединение read-only слоёв образа и writable слоя конкретного контейнера.
Слои образа
Каждый слой — результат инструкции Dockerfile.
Слои read-only и переиспользуются между контейнерами.
Writable layer контейнера
Создаётся при запуске контейнера.
Все изменения файлов пишутся сюда.
Схематично:
Образ: слой 1 → слой 2 → слой 3 (read-only)
Контейнер: + слой записи (writable)
Файл не меняется в слоях образа.
В writable layer создаётся копия файла (copy-on-write).
Все изменения происходят только в контейнере.
Удалили контейнер → удалился его writable layer.
Образ остаётся, данные контейнера — нет.
Управляется Docker.
Данные живут независимо от контейнера.
Рекомендуемый способ для БД и важных данных.
Прямая связь с директорией хоста.
Удобно для разработки.
Меньше изоляции.
Пример запуска:
docker run -v mydata:/app/data my-image
Файловая система контейнера эфемерна, поэтому любые важные данные нужно выносить во внешние хранилища — volume или bind mount.