← Fundamentos

Qué es Docker y para qué sirve: contenedores, licencia y Podman como alternativa

Docker es una herramienta para empaquetar aplicaciones en contenedores que corren igual en cualquier equipo. Para qué sirve, licencia de Docker Desktop y Podman.

En este artículo
  1. Para qué sirve Docker
  2. Conceptos básicos: imagen, contenedor y Dockerfile
  3. Contenedor vs máquina virtual
  4. Licencia: Docker Engine vs Docker Desktop
  5. Cómo instalar Docker en Linux
  6. Podman: la alternativa libre
  7. Preguntas frecuentes

Docker es una herramienta para empaquetar una aplicación junto con todo lo que necesita para funcionar (bibliotecas, configuración, dependencias) en una unidad llamada contenedor. Ese contenedor corre igual en el portátil de un desarrollador, en un servidor de la oficina o en la nube. Su motor, Docker Engine, es software libre con licencia Apache 2.0.

Para qué sirve Docker

El problema que resuelve es conocido: “en mi computador funciona”. Una aplicación depende de una versión concreta de un lenguaje, de ciertas bibliotecas y de una configuración del sistema. Al llevarla a otro equipo, algo es distinto y falla. Docker mete todo eso dentro del contenedor, así que el entorno viaja con la aplicación.

Usos habituales:

  • Instalar servicios en un servidor con un solo comando. Muchos programas libres, como Nextcloud, Jellyfin o Vaultwarden, se distribuyen como imágenes Docker listas para usar.
  • Tener el mismo entorno de desarrollo en todo el equipo. Cada persona levanta la base de datos y los servicios del proyecto sin instalarlos a mano.
  • Desplegar aplicaciones. Lo que se probó en desarrollo es exactamente lo que llega a producción.
  • Aislar aplicaciones entre sí. Dos programas que necesitan versiones distintas de la misma biblioteca conviven en el mismo servidor sin conflicto.

Conceptos básicos: imagen, contenedor y Dockerfile

Concepto Qué es
Imagen Plantilla de solo lectura con la aplicación y sus dependencias
Contenedor Una imagen en ejecución. De una imagen se pueden crear muchos contenedores
Dockerfile Archivo de texto con las instrucciones para construir una imagen
Registro Lugar donde se publican y descargan imágenes, como Docker Hub
Volumen Almacenamiento que sobrevive cuando el contenedor se borra
Docker Compose Archivo YAML que define varios contenedores que trabajan juntos

Un ejemplo: para correr un servidor web Nginx basta con docker run -d -p 8080:80 nginx. Docker descarga la imagen, crea el contenedor y lo deja escuchando en el puerto 8080.

Contenedor vs máquina virtual

Las dos tecnologías aíslan aplicaciones, pero de forma distinta. Una máquina virtual simula un computador completo, con su propio sistema operativo y su propio kernel. Un contenedor comparte el kernel del sistema anfitrión y solo aísla los procesos, los archivos y la red de la aplicación.

Contenedor Máquina virtual
Qué incluye La aplicación y sus dependencias Un sistema operativo completo
Kernel Compartido con el anfitrión Propio
Tamaño típico Decenas o cientos de MB Varios GB
Tiempo de arranque Segundos o menos Desde decenas de segundos
Aislamiento Bueno, a nivel de procesos Mayor, a nivel de hardware virtual
Sistemas que corre Del mismo tipo que el anfitrión (Linux sobre Linux) Cualquiera, incluido Windows sobre Linux

En la práctica se combinan. Una plataforma como Proxmox VE ejecuta máquinas virtuales, y dentro de una de ellas es común instalar Docker para correr varios servicios en contenedores. Si necesitas un aislamiento fuerte entre clientes o correr Windows, usa una máquina virtual. Si quieres desplegar muchos servicios livianos, los contenedores son más eficientes.

Los contenedores Docker usan funciones del kernel de Linux. En Windows y macOS, Docker funciona levantando por debajo una pequeña máquina virtual Linux.

Licencia: Docker Engine vs Docker Desktop

Aquí hay una confusión frecuente, porque “Docker” nombra a varios productos de la empresa Docker Inc. con condiciones distintas:

Producto Qué es Licencia Costo
Docker Engine El motor y la línea de comandos, para Linux Apache 2.0 Gratis para todos
Docker Desktop Aplicación de escritorio para Windows, macOS y Linux Propietaria Gratis con condiciones
Docker Hub Registro de imágenes en la nube Servicio Nivel gratis con límites

Docker Desktop es gratis para uso personal, proyectos de código abierto no comerciales y empresas con menos de 250 empleados y menos de 10 millones de dólares de ingresos anuales. Las empresas que superan cualquiera de los dos límites, y los organismos públicos, deben pagar una suscripción (Pro, Team o Business).

En un servidor Linux no necesitas Docker Desktop: Docker Engine se instala desde los repositorios oficiales y no tiene esa restricción. El costo aparece sobre todo cuando una empresa grande quiere que sus desarrolladores usen Docker en Windows o macOS.

Cómo instalar Docker en Linux

En Debian o Ubuntu Server, la forma recomendada es usar el repositorio oficial de Docker:

  1. Desinstala los paquetes antiguos o no oficiales que pueda traer la distribución (docker.io, podman-docker y similares).
  2. Agrega la clave y el repositorio oficial de Docker siguiendo la guía de instalación para tu distribución.
  3. Instala los paquetes: sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin.
  4. Comprueba que funciona con sudo docker run hello-world.
  5. Si quieres usarlo sin sudo, agrega tu usuario al grupo docker. Ten en cuenta que ese grupo da privilegios equivalentes a root en el equipo.

Podman: la alternativa libre

Podman es una herramienta de contenedores impulsada por Red Hat, con licencia Apache 2.0, y la alternativa más directa a Docker. Usa el mismo formato de imágenes y casi los mismos comandos: la documentación oficial dice que la mayoría de los usuarios puede crear el alias alias docker=podman sin problemas.

Sus diferencias principales con Docker:

  • No usa un servicio en segundo plano (daemon). Cada contenedor es un proceso normal del usuario que lo lanzó.
  • Funciona sin privilegios de root de forma nativa, lo que reduce el daño si un contenedor queda comprometido.
  • Maneja pods, grupos de contenedores al estilo de Kubernetes, y puede generar archivos para Kubernetes.
  • Podman Desktop es una aplicación de escritorio libre, sin las restricciones de licencia de Docker Desktop.

Sus limitaciones: algunos archivos de Docker Compose y algunas herramientas de terceros asumen el daemon de Docker y requieren ajustes, y la mayor parte de los tutoriales en internet están escritos para Docker. Para un servidor propio, las dos opciones funcionan bien; para una empresa grande que quiere evitar la licencia de Docker Desktop, Podman Desktop es la salida más común.

Preguntas frecuentes

¿Docker es gratis? Docker Engine sí, para cualquier uso, porque es software libre con licencia Apache 2.0. Docker Desktop es gratis para personas y empresas con menos de 250 empleados y menos de 10 millones de dólares de ingresos; las demás deben pagar.

¿Qué diferencia hay entre Docker y una máquina virtual? Un contenedor Docker comparte el kernel del sistema anfitrión y solo incluye la aplicación y sus dependencias, por eso es más liviano y arranca más rápido. Una máquina virtual incluye un sistema operativo completo con su propio kernel y aísla más.

¿Docker funciona en Windows? Sí, con Docker Desktop, que usa por debajo una máquina virtual Linux mediante WSL 2 o Hyper-V. Los contenedores siguen siendo de Linux, salvo el caso específico de los contenedores Windows.

¿Podman reemplaza a Docker? En la mayoría de los casos, sí. Usa las mismas imágenes y comandos casi idénticos, funciona sin root y sin daemon, pero algunas herramientas pensadas para Docker requieren ajustes.

¿Qué es Docker Compose? Es una herramienta para definir en un solo archivo YAML varios contenedores que trabajan juntos, por ejemplo una aplicación, su base de datos y su caché, y levantarlos con un comando.

Fuentes