12k
All articles

5 alternativas a Docker para el desarrollo local

Compara cinco alternativas a Docker Desktop para desarrollo local: Podman, OrbStack, Colima, Rancher Desktop y Lima. Consulta sistemas, costes y compatibilidad con Docker y Compose.

OpenReplay Team
OpenReplay Team
5 alternativas a Docker para el desarrollo local

Las cinco alternativas a Docker Desktop que vale la pena probar para el desarrollo local son Podman con Podman Desktop, OrbStack, Colima, Rancher Desktop y Lima con nerdctl. Solo algunas de ellas mantienen el Docker Engine real detrás de tus comandos docker.

Quizá los ventiladores de tu equipo se aceleran en cuanto arranca el contenedor de Postgres. Quizá alguien de finanzas ha preguntado cuántas licencias de Docker Desktop paga la empresa. En cualquier caso, quieres saber qué sustituto seguirá ejecutando tus scripts de docker run y tu archivo de Compose.

Esta comparativa omite los conceptos básicos de imágenes y contenedores, que ya se tratan en la guía para principiantes sobre imágenes y contenedores de Docker. Cada herramienta se evalúa según los mismos criterios: sistemas operativos, coste, motor, compatibilidad con el docker CLI, compatibilidad con Compose, a quién se adapta y los comandos para instalarla y ejecutar un primer contenedor.

Puntos clave

  • Docker Desktop es gratuito para empresas con menos de 250 empleados y menos de 10 millones de dólares de facturación anual. Las empresas más grandes necesitan una suscripción de pago Pro, Team o Business.
  • OrbStack y Colima (en su modo predeterminado) ejecutan Docker Engine en una VM más ligera. Podman y containerd con nerdctl sustituyen el motor por completo.
  • En macOS y Windows, todas las herramientas de esta comparativa siguen ejecutando contenedores Linux dentro de una máquina virtual.
  • podman compose existe, pero delega el trabajo en un proveedor externo (docker-compose o podman-compose), y uno de los dos debe estar instalado.
  • Si docker deja de funcionar después de cambiar de herramienta, ejecuta docker context ls para ver a qué endpoint de motor apunta el CLI.

¿Por qué buscan los desarrolladores alternativas a Docker en local?

Los desarrolladores suelen abandonar Docker Desktop por uno de tres motivos: la licencia, el consumo de recursos o la velocidad de uso compartido de archivos en macOS.

  • Licencia. Según los términos de licencia de Docker Desktop, la aplicación es gratuita para uso personal, educación, proyectos de código abierto no comerciales y empresas con menos de 250 empleados y menos de 10 millones de dólares de facturación anual. Una empresa que supere cualquiera de esos límites necesita una suscripción de pago Pro, Team o Business.
  • Memoria y batería. En macOS y Windows, Docker Desktop mantiene en ejecución su VM de Linux mientras haya algún contenedor activo, y esa VM consume memoria y energía incluso cuando los contenedores están inactivos. El modo Resource Saver de Docker Desktop solo detiene la VM después de que no se haya ejecutado ningún contenedor durante un tiempo (cinco minutos de forma predeterminada).
  • Bind mounts. En macOS, los archivos montados desde el host en un contenedor tienen que atravesar el límite de la VM. La propia documentación de Docker señala que los bind mounts pueden volverse lentos a medida que crece la base de código, y por eso Docker Desktop añadió los synchronized file shares. Los árboles de node_modules de gran tamaño y los file watchers son donde más se nota la ralentización.

¿Qué sustituye realmente cada alternativa a Docker?

Docker Desktop es una aplicación de escritorio que incluye una máquina virtual Linux, Docker Engine y una interfaz gráfica. Sustituir Docker Desktop no implica sustituir Docker Engine. Las alternativas se dividen en dos grupos:

GrupoHerramientasCon qué se comunica tu comando docker
Docker Engine en una VM más ligeraOrbStack, Colima (runtime predeterminado), Rancher Desktop (modo moby)Un daemon de Docker real
Motor sustituidoPodman, Lima/containerd con nerdctl, Rancher Desktop (modo containerd)La API compatible con Docker de Podman, o nada en absoluto con nerdctl. Principalmente se usa un CLI que replica la sintaxis de Docker

En el grupo de Docker Engine, el docker CLI y Compose siguen comunicándose con un daemon de Docker. En el grupo de motor sustituido, la compatibilidad con Docker proviene de una capa de línea de comandos que replica la sintaxis de Docker y, en el caso de Podman, de un socket que responde a las llamadas de la API de Docker. En macOS y Windows, todas estas herramientas siguen ejecutando contenedores Linux dentro de una VM. Cambiar de herramienta cambia la forma en que se gestiona esa VM, no si existe o no.

¿Por qué falla docker después de cambiar de herramienta?

El docker CLI se conecta al socket al que apunte la variable DOCKER_HOST o el contexto de Docker activo. Cuando los comandos fallan después de instalar una alternativa, normalmente el CLI está apuntando a un socket sin ningún motor detrás. Nuestra guía para solucionar los errores de “Docker daemon not running” analiza los mensajes de error.

docker context ls          # the active endpoint is marked with *
docker context use colima  # point the CLI at another engine

Puedes probar una alternativa sin desinstalar Docker Desktop. Cambia de contexto para probar la nueva herramienta y, después, vuelve al anterior.

Un archivo de Compose para probar cada herramienta

Utiliza un único archivo mínimo para comprobar cada herramienta. Pásalo primero por el validador de YAML, para que cualquier fallo se deba a la herramienta y no a una errata.

# compose.yaml
services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - "5432:5432"

Comparativa de alternativas a Docker

HerramientaSOCosteMotordocker CLICompose
Podman + Podman DesktopmacOS, Windows, LinuxGratuito, código abiertoPodmanMediante alias o socket de la APIpodman compose + proveedor
OrbStackmacOSGratuito para uso personal, de pago para uso comercialDocker EngineSíSí, incluido
ColimamacOS, LinuxGratuito, código abiertoDocker (predeterminado)Sí, se instala por separadoInstalar Compose por separado
Rancher DesktopmacOS, Windows, LinuxGratuitocontainerd o mobyEn modo mobynerdctl compose o docker compose
Lima + nerdctlmacOS, LinuxGratuito, código abiertocontainerdNo (nerdctl)nerdctl compose

Podman con Podman Desktop

Podman sustituye el motor de Docker y no utiliza ningún daemon. Podman Desktop es gratuito y de código abierto para macOS, Windows y Linux. En Mac y Windows dispones de un comando podman nativo, y tus contenedores se ejecutan en una VM de Linux que Podman denomina Podman machine.

  • docker CLI: los comandos de Podman usan la sintaxis de Docker, por lo que alias docker=podman cubre la mayor parte del uso diario. En Mac y Windows, Podman también acepta clientes de la API de Docker, así que puedes apuntar el docker CLI real y las herramientas basadas en Docker a su socket.
  • Compose: podman compose viene integrado, pero es un wrapper ligero que delega el trabajo en docker-compose o podman-compose. Instala uno de ellos primero.
  • Ideal para: equipos que necesitan una única herramienta gratuita en macOS, Windows y Linux.
brew install podman
podman machine init
podman machine start
podman run --rm hello-world
podman compose up

La documentación de instalación de Podman recomienda el instalador oficial en lugar de Homebrew en macOS. Podman Desktop tiene su propio instalador.

OrbStack

OrbStack es una aplicación exclusiva de macOS. Incluye un motor de Docker y las herramientas de Compose y pretende comportarse como Docker Desktop, por lo que el docker CLI y Compose funcionan sin cambios.

  • Coste: según los términos de licencia de OrbStack, es gratuito para uso personal. El uso por parte de freelancers, empresas y organizaciones sin ánimo de lucro requiere una licencia de pago por usuario.
  • Compose: incluido.
  • Ideal para: equipos que trabajan solo con Mac y quieren el flujo de trabajo de Docker Desktop con una capa de VM diferente. Las configuraciones por proyecto, como los Dev Containers para el desarrollo local, también siguen funcionando.
brew install --cask orbstack
docker run --rm hello-world
docker compose up

Colima

Colima es una herramienta de línea de comandos gratuita para macOS (Intel y Apple Silicon) y Linux. Con su runtime de Docker predeterminado, Colima ejecuta el motor de Docker dentro de una VM. También ofrece los runtimes containerd e Incus.

  • docker CLI: se instala por separado.
  • Compose: no viene incluido. Instala la fórmula docker-compose de Homebrew y, a continuación, enlázala en ~/.docker/cli-plugins para que docker compose funcione.
  • Ideal para: desarrolladores que viven en la terminal y no necesitan una interfaz gráfica.
brew install colima docker docker-compose
mkdir -p ~/.docker/cli-plugins
ln -sfn "$(brew --prefix)/opt/docker-compose/bin/docker-compose" ~/.docker/cli-plugins/docker-compose
colima start
docker run --rm hello-world
docker compose up

Si inicias Colima con el runtime containerd, ejecutarás los contenedores con colima nerdctl en lugar de docker.

Rancher Desktop

Rancher Desktop funciona en macOS (Intel y Apple Silicon), Windows y Linux. Rancher Desktop puede usar como motor containerd o dockerd (moby). Elegir moby habilita la API de Docker, por lo que el docker CLI funciona sin necesidad de alias.

  • Compose: el tutorial de contenedores explica cómo usar Compose tanto con nerdctl compose como con docker compose.
  • Advertencias: solo puede haber un runtime activo a la vez. Las imágenes descargadas con un runtime no están disponibles después de cambiar al otro. El Kubernetes incluido se puede desactivar.
  • Ideal para: equipos multiplataforma que quieren una interfaz gráfica y la API de Docker.
rdctl set --container-engine.name=moby
docker run --rm hello-world

También puedes hacer el mismo cambio en la aplicación, en Preferences > Container Engine, tal como se describe en la documentación de preferencias del motor.

Lima con containerd y nerdctl

Lima lanza máquinas virtuales Linux con uso compartido de archivos y reenvío de puertos automáticos. La plantilla predeterminada ejecuta containerd. Lima también es compatible con hosts distintos de macOS, como Linux y NetBSD.

  • docker CLI: no se utiliza. nerdctl replica los comandos de Docker y se invoca como lima nerdctl.
  • Compose: nerdctl compose implementa la Compose Specification. Algunos campos no están implementados, como links, según se indica en las notas de Compose de nerdctl.
  • Ideal para: desarrolladores que quieren componentes de código abierto que puedan ensamblar por su cuenta. Lima también tiene una plantilla docker si prefieres ejecutar Docker Engine.
brew install lima
limactl start
lima nerdctl run --rm hello-world
lima nerdctl compose up

¿Cómo elegir una alternativa a Docker?

Tu sistema operativo descarta varias alternativas a Docker antes de que las funcionalidades entren en juego. OrbStack solo funciona en macOS y Colima no tiene versión para Windows. Si buscas una única herramienta para macOS, Windows y Linux, quedan Podman Desktop y Rancher Desktop. Si tus archivos de Compose y tus scripts deben funcionar sin cambios, elige una herramienta que ejecute Docker Engine: OrbStack, Colima o Rancher Desktop en modo moby. Si quieres prescindir por completo del daemon de Docker, elige Podman.

Conclusión

La pregunta clave es si una herramienta mantiene Docker Engine o lo sustituye. Esa única diferencia determina si tus comandos docker y tus archivos de Compose funcionarán sin cambios. Elige la herramienta que se ajuste a tu sistema operativo y a tu situación de licencias, prueba con ella el compose.yaml anterior y comprueba docker context ls antes de eliminar Docker Desktop.

Preguntas frecuentes

¿Se aplica la licencia de Docker Desktop a Docker Engine en Linux?

No. Docker Engine es de código abierto bajo la licencia Apache 2.0, por lo que su uso comercial no tiene límites de empleados ni de facturación. Los umbrales de 250 empleados y 10 millones de dólares proceden del Docker Subscription Service Agreement, que cubre Docker Desktop y el Engine incluido en él. En una estación de trabajo Linux, instalar Docker Engine directamente evita la cuestión de la licencia de Desktop y la capa adicional de VM.

¿Se conservan mis imágenes y volúmenes de Docker Desktop al cambiar de herramienta?

Solo OrbStack los migra por ti. Tras la instalación, ofrece copiar los contenedores, volúmenes e imágenes de Docker Desktop, y la opción sigue disponible en File > Migrate Docker Data. Realiza una copia, por lo que los datos originales permanecen donde están. Con Colima, Podman o Rancher Desktop, exporta las imágenes con docker save, cárgalas en el nuevo motor y haz una copia de seguridad de los volúmenes con nombre como archivos tar.

¿Funciona Testcontainers con Podman en lugar de Docker?

Sí, a través del socket de la API compatible con Docker de Podman. Configura DOCKER_HOST para que apunte al socket de Podman. En macOS, podman machine inspect te proporciona la ruta, y además debes establecer TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE en /var/run/docker.sock. En Linux, el socket es podman/podman.sock dentro de XDG_RUNTIME_DIR. En modo rootless, establece TESTCONTAINERS_RYUK_DISABLED=true para desactivar el contenedor de limpieza Ryuk. El equipo de Testcontainers no prueba activamente runtimes alternativos, por lo que es posible que algunas funcionalidades no funcionen.

¿Pueden los Dev Containers de VS Code usar Podman en lugar de Docker?

Sí. Establece el ajuste Docker Path de Dev Containers (dev.containers.dockerPath) en podman en Linux, Windows o macOS. La extensión ejecuta comandos del CLI de contenedores y nunca se comunica directamente con un daemon. VS Code describe Podman 5 y versiones posteriores como mayormente compatibles con el CLI de Docker, pero no ofrece soporte oficial para otros CLI compatibles con Docker. Los dev containers basados en Compose también necesitan tener configurado un proveedor de Compose.

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.