Тюрьмы FreeBSD или экземпляры Docker

В чем основные различия между jails во FreeBSD и Docker в Linux? Является ли один из них значительно более безопасным или более производительным, чем другой? Тюрьмы намного старше, чем экземпляры Docker, поэтому сам код можно считать более безопасным. Но тюрьмы так и не "прижились", так что, возможно, они не так хороши, как экземпляры Docker? Или это просто потому, что Linux намного популярнее FreeBSD?

Я рассмотрю некоторые аспекты FreeBSD jails и Linux Docker, расскажу о том, чем они похожи и чем отличаются.

  • оба служат одной и той же цели: это реализация облегченной виртуализации, когда вы запускаете приложение в отдельном и изолированном отсеке под одним и тем же ядром, и на этом сходства заканчиваются, и начинаются различия
  • Docker - это инструмент, который используется в основном для запуска подготовленных двоичных образов, которые можно получить из различных общедоступных или частных репозиториев. Большинство людей используют его таким образом. Все меньше людей создают свои собственные и затем загружают их в эти хранилища.
  • Тюрьмы FreeBSD больше похожи на LXC в Linux: это метод создания вашего контейнера с нуля. Вы создаете его, устанавливаете в него программное обеспечение, и это почти все - его можно рассматривать как FreeBSD внутри FreeBSD. Нет простого способа экспортировать этот контейнер как отдельную часть программного обеспечения, как в Docker. Таким образом, почти все люди, использующие FreeBSD, напротив, всегда создают свою собственную часть FreeBSD внутри контейнера с нуля (т.е. из установленной базовой системы), устанавливая программное обеспечение из системы портов FreeBSD или из исходного кода. Таким образом, тюрьмы FreeBSD менее дружелюбны и имеют более высокую начальную стоимость использования.
  • точно так же, как контейнеры LXC являются постоянными, тюрьмы FreeBSD также являются постоянными. Все изменения остаются неизменными между загрузками. Как я уже сказал, это всего лишь часть ОС внутри одной и той же ОС (хотя версии пользовательского программного обеспечения могут отличаться до тех пор, пока ABI не будет поддерживаться в ядре FreeBSD). Это означает, что вы не можете совершить изменения - они вносятся сразу после их создания.
  • из всего вышесказанного очевидно, почему контейнеры FreeBSD не могут иметь аналогичный уровень оркестровки, как это делает Docker: нет публикации портов, нет томов, нет ссылок или каких-либо мета-соединений между различными тюрьмами. Только те интерфейсы, которые предоставляет вам сетевая ОС: сетевые сокеты, сокеты unix, общие точки монтирования.
  • конечно, нет никаких ограничений в отношении того, кто может с кем общаться внутри FreeBSD jails, поскольку в Docker их нет.
  • вы можете запускать собственные образы docker во FreeBSD, потому что во FreeBSD есть по крайней мере частичная поддержка docker, но, поскольку Linux бесплатен, я настоятельно не советую этого делать (и я искренне и глубоко люблю FreeBSD), потому что они будут запускаться через уровень совместимости с Linux (поставляется с модулем ядра FreeBSD). что накладывает некоторые известные ограничения.