Подтвердить что ты не робот

Почему Docker нуждается в файловой системе Union

Что именно делает Docker с файловой системой Union (например, AUFS) для создания контейнеров? Если Docker должен был использовать обычную файловую систему вместо файловой системы union, какие будут недостатки?

Я ищу конкретные технические детали/внутренности, а не ответ на высокий уровень.

4b9b3361

Ответ 1

Используется для:

  • избегать дублирования полного набора файлов при каждом запуске образа в качестве нового контейнера.
  • изолировать изменения в файловой системе контейнера на своем собственном уровне, позволяя перезапустить тот же контейнер из известного содержимого (так как слой с изменениями будет удален при удалении контейнера).

Это UnionFS:

реализует объединение монтирования для других файловых систем. Он позволяет прозрачно накладывать файлы и каталоги отдельных файловых систем, называемых ветвями, образуя единую согласованную файловую систему.
Содержимое каталогов, имеющих один и тот же путь в объединенных ветвях, будет отображаться вместе в одном объединенном каталоге в новой виртуальной файловой системе.

Это позволяет файловой системе появляться как записываемый, но без фактического разрешения записи для изменения файловой системы, также известной как copy-on-write

Если у вас не было UnionFS, запуск изображения размером 200 МБ в 5 раз по мере того, как 5 разделяющих контейнеров означают 1 ГБ дискового пространства.

Подробнее в разделе Как работает изображение Docker?".
Более подробную информацию см. В следующих разделах: