Docker se ha convertido en la herramienta por defecto para ejecutar contenedores, pero no es la única que sirve. Un artículo reciente de How-To Geek repasa cuatro alternativas completamente abiertas y sin dependencia de una empresa concreta: Podman, la pareja containerd y nerdctl, Rancher Desktop y LXC. Cada una resuelve el problema de una forma distinta. Algunas imitan la experiencia de Docker casi al detalle, y otras proponen un modelo diferente. Todas ofrecen un camino para quienes quieren más control, menos licencias de por medio o una arquitectura más segura. A continuación explicamos en qué se diferencian, para qué sirve cada una y cómo plantear un cambio sin complicaciones, con atención especial a Podman, la más cercana y la que más interés despierta.
Por qué plantearse una alternativa
Docker funciona bien, y eso conviene decirlo. El motivo para mirar otras opciones suele ser práctico. El primero es la licencia de Docker Desktop. Desde 2021, las empresas con más de 250 empleados o más de 10 millones de dólares de ingresos anuales necesitan una suscripción de pago. Para un particular o una empresa pequeña no cambia nada, pero para equipos grandes sí.
El segundo motivo es la arquitectura. Docker se apoya en un servicio en segundo plano, llamado dockerd, que suele ejecutarse con privilegios de administrador. Si ese servicio se ve comprometido, el impacto es elevado. Además, consume recursos aunque no haya ningún contenedor activo.
El tercero es la compatibilidad. Gracias a la Open Container Initiative, las imágenes siguen un estándar común. Eso significa que casi cualquier contenedor pensado para Docker funciona con otras herramientas. La única excepción es LXC, que parte de otra filosofía, como veremos más abajo. En la práctica, cambiar de motor no obliga a rehacer las imágenes.
Podman: la opción más parecida y la más segura
Podman es, probablemente, el sustituto más sólido. La experiencia desde la línea de comandos es casi idéntica a la de Docker. Los comandos son los mismos, y basta cambiar la palabra docker por podman. Muchos usuarios definen simplemente un alias para no tocar sus costumbres ni sus scripts.
Por dentro, sin embargo, es muy diferente. Utiliza la biblioteca libpod en lugar de containerd y no necesita ningún servicio central. Cada contenedor se lanza como un proceso hijo del usuario que ejecuta la orden. Si Podman se detiene, los contenedores siguen funcionando. El repositorio oficial del proyecto resume bien su planteamiento: es una herramienta sin demonio para gestionar contenedores OCI, imágenes, volúmenes y pods.
La segunda gran ventaja es el modo sin privilegios de root. Podman puede ejecutar contenedores con un usuario normal mediante espacios de nombres de usuario. El sistema asigna los identificadores del contenedor a identificadores sin privilegios en el anfitrión, a través de los archivos /etc/subuid y /etc/subgid. Si alguien escapa del contenedor, no obtiene permisos de administrador. Con un demonio que corre como root, ese riesgo es mayor.
Podman añade además el concepto de pod, un grupo de contenedores que comparten red y que se parece al modelo de Kubernetes. Puede generar archivos YAML compatibles con Kubernetes a partir de contenedores ya en marcha. Y se integra con systemd, de forma que los contenedores arrancan y se supervisan como cualquier otro servicio del sistema. Para un servidor doméstico o un NAS que debe levantar servicios al arrancar, es una función muy útil.
El principal inconveniente es la adaptación. Algunas herramientas del ecosistema asumen la presencia del socket de Docker, y habrá que revisar esas dependencias. En macOS y Windows, Podman ejecuta los contenedores dentro de una máquina virtual Linux, igual que lo hace Docker Desktop.
containerd con nerdctl: el Docker de siempre, sin Docker
La segunda alternativa combina dos piezas. containerd es el motor de ejecución que ya usa Docker por debajo. nerdctl es una herramienta de línea de comandos que reproduce los comandos de Docker sobre containerd.
La combinación da una experiencia solo de terminal, que es, en el fondo, el punto de partida original de Docker. Los comandos se traducen de forma directa, y nerdctl build sustituye a docker build. También admite Docker Compose y ofrece un modo opcional sin privilegios de root.
Según la guía de DEV Community sobre alternativas a Docker la configuración de containerd y nerdctl resulta algo más compleja que instalar Docker. Es un precio razonable para quien ya conoce el sistema y quiere un entorno más ligero y con menos capas.
Rancher Desktop y LXC: dos enfoques distintos
Rancher Desktop es una aplicación de escritorio desarrollada por SUSE, el equipo detrás de openSUSE. Ofrece algo muy parecido a Docker Desktop, pero sin depender del motor de Docker. Permite elegir entre distintos motores de contenedores e incluye Kubernetes integrado mediante k3s. Es la opción más cómoda para quien trabaja en un portátil y quiere interfaz gráfica, o para equipos que necesitan probar clústeres de Kubernetes en local.
LXC sigue otra lógica. Los contenedores de Docker están pensados para ejecutar una aplicación concreta. Los de LXC funcionan más bien como sistemas completos que comparten el núcleo del anfitrión. Se parecen a una máquina virtual ligera, con su propio sistema de arranque y sus servicios, aunque sin la sobrecarga de virtualizar el hardware. Es una buena opción para quien quiere varios entornos Linux aislados en un mismo equipo, pero no sirve para ejecutar directamente las imágenes OCI del ecosistema Docker. Por eso es la excepción en cuanto a compatibilidad.
Migrar sin romper nada
El paso a otra herramienta no tiene por qué ser traumático. Un buen punto de partida es probar el alias y comprobar qué ocurre. Un desarrollador que explica su experiencia en DEV Community cuenta que su equipo se planteó dejar Docker para el desarrollo local. Señala el cambio en el modelo de negocio de Docker Desktop como punto de inflexión. También destaca que la línea de comandos de Podman es casi idéntica, así que el alias a podman permite una transición con muy poca curva de aprendizaje.
Conviene seguir unos pasos sencillos. Primero, probar las imágenes que ya se usan, porque casi todas funcionarán sin cambios. Segundo, revisar los archivos de Compose, que Podman y nerdctl admiten con pequeñas diferencias. Tercero, comprobar los volúmenes y los permisos. En modo sin privilegios, los archivos montados pueden pertenecer a identificadores distintos, y eso genera errores de acceso si no se ajusta. Cuarto, revisar la red. Un puerto inferior al 1024 no puede abrirse sin privilegios, salvo que se modifique un parámetro del sistema.
Para entornos domésticos, el ejemplo típico es un servidor que ejecuta unas pocas aplicaciones, como un gestor de domótica, un servidor multimedia o un bloqueador de anuncios. Ahí, Podman con systemd funciona muy bien y reduce el consumo en reposo, al no haber un demonio permanente. En entornos de empresa con Kubernetes, Rancher Desktop o containerd resultan más naturales.
Reflexiones adicionales
Nada de esto significa que Docker esté acabado. Sigue siendo la referencia, con la mayor cantidad de documentación y de herramientas compatibles. La conclusión más útil es otra: elegir una herramienta por costumbre y no por necesidad sale caro a la larga.
La pregunta práctica es qué se necesita. Si interesa la seguridad y un uso sin privilegios, Podman es la opción lógica. Si se busca un entorno mínimo para scripts y servidores, containerd con nerdctl encaja bien. Si se quiere una interfaz gráfica y Kubernetes en el portátil, Rancher Desktop cubre ese caso. Y si lo que se desea son sistemas Linux aislados, LXC tiene sentido.
También conviene recordar que el estándar OCI ha cambiado el panorama. Hoy el formato de imagen es independiente del motor, y eso da libertad real para probar sin miedo a quedar atado. Probar una alternativa en una máquina de pruebas lleva una tarde y puede ahorrar problemas de licencias, de seguridad y de recursos.
29