КОНСАЛТИНГ | IT-АУТСОРСИНГ | РЕШЕНИЯ | КЕЙСЫ
На ноутбуках корпоративных разработчиков почти всегда живёт маленький кит — Docker Desktop.
Docker Engine бесплатен. Linux нативно запускает контейнеры. Но начиная с определённого масштаба компаниям нужна коммерческая лицензия Docker Desktop: организациям с численностью более 250 сотрудников или выручкой выше $10 млн требуется платная подписка. В публикации Vivian Voss указана цена $24 за пользователя в месяц: для команды из 500 разработчиков это $144 000 в год.
И вот здесь интересный вопрос.
Платят ведь не за контейнеры. Платят за "расстояние между ноутбуком разработчика и Linux-ядром", на котором этот контейнер реально работает.
Docker-цепочка
Код
↓
Dockerfile
↓
Image
↓
Registry
↓
dockerd
↓
ContainerЭто не плохо. Docker решил важную задачу Linux: воспроизводимая доставка приложения вместе с зависимостями.
Но вокруг запуска одного процесса часто появляется много обязательных сущностей:
Docker daemon
образы и слои
registry
volumes
overlay-сети
YAML-конфигурации
кеширование сборок
CI/CD
оркестрацияДля Kubernetes и большой распределённой платформы это оправданно. Но нужен ли весь этот слой, чтобы запустить сайт, reverse proxy, PostgreSQL, Redis, Zabbix, GLPI, DNS и тп?
В FreeBSD это уже есть
FreeBSD Jail появился в базовой системе ещё в 2000 году. Это изоляция процессов на уровне ядра: без обязательного daemon, registry и слоёв образов.
FreeBSD host
├── jail: web
├── jail: database
├── jail: monitoring
├── jail: mail
└── jail: reverse-proxyJail получает своё окружение: процессы, hostname, сеть и файловую систему. При этом все jail используют ядро хоста.
А с ZFS получаем snapshots, клоны и быстрый rollback:
# Снимок перед обновлением
bastille zfs web snapshot before_update# Если что-то пошло не так
bastille zfs web rollback before_update
Docker или Jail?
Не надо выбирать религию. Надо выбирать архитектурный слой под задачу.
Jail подходит, когда:
- сервис нативно работает на FreeBSD
- нужен лёгкий изолированный web, DB, DNS или monitoring-сервис
- важны ZFS snapshots и простая эксплуатация
- нет требования запускать готовый Docker-образ
- хочется уменьшить количество компонентов в системе
Docker оправдан, когда:
- поставщик даёт приложение только в Docker-образе
- команда использует Docker Compose
- инфраструктура построена вокруг Kubernetes
- нужны готовые образы из Linux-экосистемы
Не нужно делать Docker платформой для всего. Пусть FreeBSD-сервисы живут в jail, а Linux-зависимые приложения — в отдельной VM.
Главная мысль
Иногда лучший container runtime — тот, который уже встроен в операционную систему.
- Jail — нативная изоляция FreeBSD.
- Bastille — удобное управление jail.
- ZFS — snapshots, клоны и откаты.
- bhyve — виртуальные машины для Linux и Docker-зависимостей.
Не «Docker против FreeBSD». А меньше лишних слоёв там, где они не нужны.
Комментарии