¿Cuáles son las principales diferencias entre las cárceles en FreeBSD y Docker en Linux? ¿Es uno considerablemente más seguro o más eficiente que el otro? Las cárceles son mucho más antiguas que las instancias de Docker, por lo que el código en sí podría considerarse más seguro. Pero las cárceles nunca "se dieron cuenta", por lo que tal vez no sean tan buenas como las instancias de Docker. ¿O es solo porque Linux es mucho más popular que FreeBSD?
Abordaré algunos de los aspectos de las cárceles de FreeBSD y Linux Docker, de cómo son similares y de cómo son diferentes.
- ambos tienen el mismo objetivo: es una implementación de virtualización liviana, cuando ejecuta la aplicación en un compartimento separado y aislado bajo el mismo kernel, y aquí terminan las similitudes y comienzan las diferencias
- Docker es una herramienta que se utiliza principalmente para ejecutar imágenes binarias preparadas que se pueden obtener de varios repositorios públicos o privados. La mayoría de la gente lo usa de esta manera. Menos personas construyen las suyas y las cargan en esos repositorios.
- Las cárceles de FreeBSD son más como LXC en Linux: es un método para crear su contenedor desde cero. Lo creas, instalas el software en él, y eso es casi todo : se puede tratar como un FreeBSD dentro de FreeBSD. No hay una manera fácil de exportar ese contenedor como una sola pieza de software, como en Docker. Por lo tanto, casi todas las personas que usan FreeBSD, por el contrario, siempre construyen su propia pieza de FreeBSD dentro de un contenedor desde cero (es decir, desde el sistema base instalado), instalando software desde el sistema de puertos de FreeBSD o desde la fuente. Por lo tanto, las cárceles de FreeBSD son menos amigables y tienen un mayor costo de uso inicial.
- de la misma manera que los contenedores LXC son persistentes, las cárceles de FreeBSD también lo son. Todos los cambios permanecen intactos entre las botas. Como dije, es solo una pieza de sistema operativo dentro del mismo sistema operativo (aunque las versiones de software de espacio de usuario pueden diferir hasta que la ABI se mantenga en el kernel de FreeBSD). Esto significa que no puede cometer los cambios : se confirman una vez que se crean.
- de todo lo anterior, es obvio por qué los contenedores FreeBSD no pueden tener su capa de orquestación similar, como lo hace Docker: no hay publicación de puertos, no hay volúmenes, no hay enlaces ni metaconexiones entre diferentes cárceles. Solo las interfaces que le proporciona el sistema operativo en red: sockets de red, sockets unix, puntos de montaje comunes.
- no hay limitaciones, por supuesto, sobre quién puede comunicarse con quién dentro de las cárceles de FreeBSD, ya que no hay ninguna en Docker.
- puede ejecutar imágenes nativas de docker en FreeBSD, porque hay al menos un soporte parcial de docker en FreeBSD, pero, dado que Linux es gratuito, lo desaconsejo encarecidamente (y amo verdadera y profundamente a FreeBSD), porque se ejecutarán a través de la capa de compatibilidad de Linux (proporcionada con un módulo de kernel de FreeBSD) que proporciona algunas limitaciones conocidas.