Soy de los que le tienen cariño a FreeBSD, así que llevo tiempo buscando una alternativa a Docker que escale parecido y que sepa distribuir imágenes por su cuenta, sin que tenga yo que inventarme el tinglado.

Hace poco di con el proyecto Pot para FreeBSD y me puse a trastear con él.

Aquí va lo que me ha parecido Pot frente a Docker, después de pelearme con los dos.

Rendimiento

En mis pruebas Pot iba bastante más rápido que Docker. Y no hablo de un matiz que solo se ve en una gráfica: se nota usándolo.

La razón está debajo. Pot se apoya en las jails de FreeBSD, una virtualización ligera que va muy fina y que aísla bien. Las jails son más eficientes que los contenedores de Docker porque no arrastran ni la sobrecarga de una máquina virtual ni una pila de red complicada por medio.

Distribución

El mecanismo de distribución de Pot es mucho más simple que el de Docker, y esto fue lo que más me llamó la atención.

Pot genera las imágenes como ficheros ZIP normales y corrientes. Un ZIP, sin más. Lo subes donde te dé la gana: S3, un FTP, un servidor de ficheros cualquiera. Eso te quita de encima montar y mantener un registry, y viene de perlas si tienes que desplegar la misma aplicación en varios sitios a la vez.

Facilidad de uso

Aquí gana Docker. La interfaz de Pot no es tan evidente y hay cosas que no te salen a la primera.

La curva de aprendizaje es más empinada: tienes que entender cómo funcionan las jails de FreeBSD y manejarte con sus comandos, que no son precisamente los que tienes en los dedos si vienes de Docker.

Dicho eso, una vez le pillas el truco, Pot se usa sin problema y tiene todo lo que necesitas para gestionar tus contenedores.

Docker Hub vs. Imágenes preconstruidas

La mayor ventaja de Docker sobre Pot, y no es pequeña, son las imágenes ya hechas de Docker Hub.

Docker Hub es un repositorio central con miles de imágenes preconstruidas de las aplicaciones más habituales. Levantas un Postgres o un nginx en treinta segundos sin saber nada de cómo está montado por dentro, y por eso mucha gente empieza con Docker sin dolor.

Pot no tiene nada parecido. No hay repositorio centralizado de imágenes preconstruidas, así que te toca construirte las tuyas desde cero.

El consuelo es que construir imágenes en Pot es más simple que en Docker, y no necesitas un Dockerfile para crear una.

FreeBSD Jails vs. Contenedores

Pot se apoya en las jails de FreeBSD, un tipo de virtualización que te da un entorno aislado donde ejecutar tus aplicaciones.

Las jails se parecen a los contenedores de Docker, pero son más ligeras y no arrastran la sobrecarga de una máquina virtual. Además aíslan muy bien, cosa que se agradece cuando lo que vas a meter ahí dentro va a producción.

Integración con Nomad

La integración de Pot con Nomad es sencilla y funciona muy bien. Nomad es un orquestador de contenedores bastante extendido, con escalado automático y descubrimiento de servicios. Enchufar Pot a Nomad cuesta poco, así que si tienes que gestionar muchos contenedores repartidos por varios hosts, la combinación se sostiene.

Testabilidad

Para probar aplicaciones en entornos aislados, Pot va de lujo. Las jails de FreeBSD te dan un entorno cerrado donde lanzar la aplicación, así que probarla con distintas configuraciones es rápido y no te deja la máquina hecha un desastre.

Conclusión

FreeBSD Pot es una alternativa seria a Docker si lo que buscas son contenedores ligeros y bien aislados. Rinde mejor y la distribución por ZIP me parece una idea acertada. En contra tiene la falta de imágenes ya hechas y una curva de aprendizaje más dura al principio. Si ya andas metido en FreeBSD, a mí me parece que merece la pena probarlo.