Контейнеры FreeBSD без Docker overhead — изоляция на уровне ядра с 2000 года, управление через Bastillefile.
«Jails появились раньше Docker на 13 лет и до сих пор превосходят его по изоляции и производительности на FreeBSD.»
FreeBSD Jails — механизм изоляции процессов на уровне ядра, представленный в FreeBSD 4.0 в 2000 году. В отличие от Docker-контейнеров, Jail — это настоящая изолированная среда с отдельным корневым каталогом, сетевым стеком (VNET) и идентификаторами процессов. Нет container runtime, нет overlay filesystem, нет daemon — только ядро FreeBSD. Overhead контейнеризации практически отсутствует: Jail работает со скоростью нативного процесса.
Bastille — инструмент управления Jails, написанный на чистом POSIX sh без внешних зависимостей. Bastillefile (аналог Dockerfile) описывает конфигурацию Jail декларативно: установка пакетов, настройка сети, монтирование файловых систем. ZFS clone-based provisioning создаёт новый Jail за секунды через клонирование ZFS-датасета шаблона — без копирования гигабайт данных. VNET с epair даёт каждому Jail отдельный сетевой стек, как у полноценной ВМ.
В стеке IgNix Jails используются для изоляции сервисов на хостах: каждый сервис (Nginx, PostgreSQL, Wazuh, Graylog) живёт в отдельном Jail, компрометация одного не затрагивает остальные. Linux Jails позволяют запускать Linux-бинари внутри FreeBSD без ВМ — полезно для сервисов с Linux-only зависимостями. Resource Control (rctl) ограничивает CPU, RAM и disk I/O каждого Jail.
Килл-фичи:
VNET (виртуальный сетевой стек) — каждый Jail получает полностью изолированный сетевой стек с epair-интерфейсами
ZFS clone-based provisioning — новый Jail из шаблона за секунды через zfs clone, без копирования данных
Bastillefile (как Dockerfile) — декларативное описание Jail, reproducible builds, хранение в Git
Linux Jails — запуск Linux-бинарей в FreeBSD Jail через линукс-слой ядра без ВМ
Resource Control (rctl) — лимиты CPU, RAM, disk I/O на уровне ядра, без cgroups сложности
POSIX sh без зависимостей — Bastille работает на минимальной FreeBSD без Python, Ruby или Node
Нативная PF-интеграция — правила firewall на уровне Jail через anchors в pf.conf
Что заменяет: Docker, Podman, LXC/LXD, systemd-nspawn, Kubernetes (для stateful сервисов)
Версия: Bastille 1.4.0 / FreeBSD Jails (в составе FreeBSD 15.x)
Роль в стеке: Слой 2 — Виртуализация / Контейнеры и изоляция сервисов