Как работает OverlayFS и для чего он используется в контейнеризации?

Категория: Docker

Просмотров: 21

Ответ:

OverlayFS — это файловая система с наложением (union файловая система), которая позволяет объединять несколько слоев файловых систем в одну. В контейнеризации, особенно в Docker, OverlayFS используется для эффективного управления слоями файловых систем контейнеров. Это помогает минимизировать использование дискового пространства и увеличивает скорость запуска контейнеров.

OverlayFS объединяет два (или более) набора файловых систем (каталогов) — нижний слой (lower layer) и верхний слой (upper layer), создавая объединённый результат, который выглядит как единая файловая система. При этом каждая операция записи, изменения или удаления происходит только в верхнем слое, а нижний слой остаётся неизменным и доступным только для чтения.

Вот как OverlayFS работает с основными операциями:

  1. Чтение: Когда файл запрашивается контейнером, OverlayFS сначала ищет его в верхнем слое. Если файл там не найден, система обращается к нижнему слою. Таким образом, контейнер может "видеть" файлы и из верхнего, и из нижнего слоёв.

  2. Запись: Если контейнер изменяет или создаёт новый файл, эта операция происходит только в верхнем слое. При попытке изменить файл, который существует в нижнем слое, файл копируется из нижнего слоя в верхний слой (процесс называется копирование при записи, или copy-on-write), и изменение производится в копии в верхнем слое. Таким образом, нижний слой остаётся неизменным.

  3. Удаление: Если контейнер удаляет файл, который находится в нижнем слое, в верхнем слое создаётся специальный маркер, обозначающий, что файл удалён. Этот маркер блокирует доступ к файлу из нижнего слоя.