Почему серверная часть хранилища Docker vfs не считается пригодной для производства?
Серверная часть хранилища Docker vfs в нескольких местах упоминается как не производственная серверная часть (см., Например, комментарий к проблеме Docker GitHub Майкла Кросби). Что делает его не пригодным для производства?
Описание хранилища в Project Atomic гласит:
Бэкэнд vfs - это очень простой резерв, который не имеет поддержки копирования при записи. Каждый слой - это просто отдельный каталог. Создание нового слоя на основе другого слоя выполняется путем создания глубокой копии базового слоя в новый каталог.
Поскольку этот бэкэнд не разделяет использование дискового пространства между слоями и поскольку создание нового слоя является медленной операцией, это не очень практичный бэкэнд. Тем не менее, он по-прежнему имеет свои применения, например, для проверки других бэкендов, или если вам нужен супер надежный (если медленный) бэкэнд, который работает везде.
В соответствии с этим описанием кажется, что единственным недостатком является то, что может использоваться больше дискового пространства, а создание слоев может выполняться медленнее. Но нет никаких упоминаний о минусах во время выполнения при доступе к файлам, и он даже описывается как "надежный". Одна только проблема дискового пространства не кажется блокирующим для производственного использования.
1 ответ
Действительно, вы могли бы использовать vfs
Драйвер в производстве, однако, следует помнить, что, поскольку это "обычная" копия, вы не сможете воспользоваться функциями, которые могут предоставить devicemapper или btrfs, и вы полагаетесь исключительно на базовую файловую систему.
Недостатком времени выполнения является то, что он намного медленнее run
, После запуска, если у вас одна и та же базовая файловая система, это будет то же самое.
Короче, я бы рекомендовал против, потому что:
- Он был реализован сначала для тестов, а затем использовался для томов. Никогда не предназначался для использования во время выполнения
- Он опирается на базовую файловую систему, поэтому вы даете меньше контроля Docker над вашими файлами. Это может (или не может) вызвать проблемы с будущим обновлением. Сама цель Docker - абстрагировать хост, так что вам лучше делегировать подобные вещи Docker.
- Занимает много места на диске
- Требуется много времени для запуска или фиксации