Qué es Docker y cómo funciona esta valiosa herramienta

Docker

Docker es una plataforma de contenedorización de código abierto que permite construir, distribuir y ejecutar aplicaciones en entornos aislados llamados contenedores. Desde su lanzamiento inicial en 2013, Docker se ha convertido en una herramienta fundamental para sysadmins, ingenieros DevOps y desarrolladores que necesitan despliegues consistentes y reproducibles en cualquier infraestructura – ya sea local, on-premises o en la nube.

En este artículo cubrimos las principales funcionalidades de Docker, cómo funciona, los conceptos clave que necesitas comprender y en qué se diferencian los contenedores de las máquinas virtuales.

¿Para qué sirve Docker?

Docker resuelve un problema de infraestructura común: una aplicación que funciona en un entorno pero falla en otro debido a diferencias en las versiones del sistema operativo, las bibliotecas o la configuración. Al empaquetar la aplicación junto con todas sus dependencias en un contenedor, Docker garantiza que funcione de la misma manera en cualquier lugar.

En la práctica, Docker permite:

  • Estandarizar los entornos entre desarrollo, pruebas, staging y producción, eliminando los problemas del tipo «funciona en mi máquina».
  • Desplegar más rápido y de forma más fiable, ya que los contenedores se inician en segundos e incluyen todo lo que la aplicación necesita para funcionar.
  • Simplificar los rollbacks, porque cada versión de tu aplicación es una imagen inmutable que puede redesplegarse en cualquier momento.
  • Optimizar el uso de recursos, ya que los contenedores comparten el kernel del sistema operativo del host y consumen mucho menos overhead que las máquinas virtuales.

Estructura de Docker: ¿cómo funciona Docker?

La estructura de Docker se basa en una arquitectura cliente-servidor. Los componentes principales son:

  • Docker Engine: el runtime principal que construye y ejecuta contenedores. Incluye el daemon Docker (dockerd), que gestiona imágenes, contenedores, redes y volúmenes en el host.
  • Docker CLI: la interfaz de línea de comandos (docker) utilizada para interactuar con el daemon. Comandos como docker build, docker run y docker pull se emiten a través de la CLI.
  • Docker Images:plantillas de solo lectura que contienen el código de la aplicación, el runtime, las bibliotecas y las dependencias. Las imágenes se construyen a partir de un Dockerfile, un archivo de texto con instrucciones paso a paso.
  • Docker Containers: instancias en ejecución de una imagen. Cada contenedor está aislado de los demás y del host, pero comparte el kernel del sistema operativo del host. Esto es lo que hace que los contenedores sean ligeros y rápidos en comparación con las máquinas virtuales.
  • Docker Registries: servicios que almacenan y distribuyen imágenes. El más utilizado es Docker Hub, pero también puedes usar Amazon ECR, GitHub Container Registry o Google Artifact Registry. Para más detalles, lee nuestra guía sobre cómo funciona un Docker repository.

Aquí tienes un ejemplo mínimo de Dockerfile:

FROM nginx:alpine

COPY ./site /usr/share/nginx/html

EXPOSE 80

Este Dockerfile parte de la imagen oficial Nginx Alpine, copia los archivos de tu sitio web en el contenedor y expone el puerto 80. Puedes construirlo y ejecutarlo con:

$ docker build -t my-site:1.0 .
$ docker run -d -p 8080:80 my-site:1.0

Tu sitio está ahora en ejecución en un contenedor, accesible en http://localhost:8080.

Gestión de aplicaciones multi-contenedor

La mayoría de las aplicaciones reales están compuestas por más de un servicio – un servidor web, una base de datos, una capa de caché. Existen dos herramientas principales para gestionar configuraciones multi-contenedor, cada una diseñada para una escala diferente: 

  • Docker Compose: define y ejecuta aplicaciones multi-contenedor en un único host usando un archivo de configuración YAML. Ideal para desarrollo, pruebas y despliegues de producción a pequeña escala.
  • Kubernetes: una plataforma de orquestación de contenedores completa que gestiona contenedores a escala en múltiples hosts. El estándar del sector para cargas de trabajo de producción que requieren alta disponibilidad, autoescalado y rolling updates.

Contenedores Docker vs máquinas virtuales: ¿cuál es la diferencia?

Esta es una de las preguntas más comunes para cualquiera que se acerque a la contenedorización por primera vez. Ambas tecnologías proporcionan aislamiento, pero lo logran de formas fundamentalmente diferentes.

Una máquina virtual (VM) ejecuta un sistema operativo guest completo sobre un hipervisor, que virtualiza el hardware subyacente. Cada VM incluye su propio kernel, bibliotecas de sistema y binarios. Esto proporciona un fuerte aislamiento pero tiene un coste: las VMs son pesadas (normalmente gigabytes), lentas de iniciar (minutos) y consumen una cantidad significativa de CPU y RAM.

Un contenedor Docker comparte el kernel del sistema operativo del host y utiliza funcionalidades a nivel de sistema operativo (namespaces y cgroups) para aislar procesos, sistemas de archivos e interfaces de red. Los contenedores no incluyen un sistema operativo completo – solo la aplicación y sus dependencias. Esto los hace ligeros (a menudo megabytes), rápidos de iniciar (segundos) y eficientes en el uso de recursos.

Diagrama que compara la arquitectura de máquinas virtuales con la arquitectura de contenedores Docker

En muchos entornos de producción, los contenedores Docker se ejecutan dentro de máquinas virtuales – la VM proporciona el aislamiento a nivel de hardware y el contenedor proporciona el aislamiento a nivel de aplicación. Las dos tecnologías son complementarias, no mutuamente excluyentes.

Empezar con Docker

Si quieres profundizar, explora los demás artículos de esta serie:

Si gestionas entornos contenedorizados en producción, recuerda que una sólida estrategia de backup es tan importante como el propio despliegue. Uranium Backup soporta el backup de máquinas virtuales, bases de datos y los datos que alimentan tus aplicaciones contenedorizadas.

¿Qué es Docker en términos sencillos?

Docker es una plataforma que permite empaquetar una aplicación y todas sus dependencias en una unidad estandarizada llamada contenedor. Los contenedores funcionan de la misma manera en cualquier máquina, eliminando los problemas relacionados con las diferencias entre los entornos de desarrollo y producción.

¿Docker es gratuito?

Docker Engine es de código abierto y de uso gratuito. Docker Desktop es gratuito para uso personal y pequeñas empresas (menos de 250 empleados y menos de 10 millones de dólares de facturación anual); las organizaciones más grandes necesitan una suscripción de pago.

¿Cuál es la diferencia entre un contenedor Docker y una imagen Docker?

Una imagen es una plantilla de solo lectura que contiene el código de la aplicación, el runtime, las bibliotecas y la configuración. Un contenedor es una instancia en ejecución de esa imagen. Es posible ejecutar varios contenedores a partir de la misma imagen, cada uno aislado de los demás.

¿Cuál es la diferencia entre Docker y una máquina virtual?

Una máquina virtual ejecuta un sistema operativo invitado completo sobre un hipervisor y virtualiza el hardware subyacente. Un contenedor Docker comparte el kernel del sistema operativo del host e solo incluye la aplicación y sus dependencias. Esto hace que los contenedores sean más ligeros, más rápidos de iniciar y más eficientes en el uso de recursos. Ambas tecnologías se utilizan a menudo de forma conjunta en entornos de producción.

¿Qué es un Dockerfile?

Un Dockerfile es un archivo de texto que contiene un conjunto de instrucciones para crear una imagen Docker. Cada instrucción define una capa – por ejemplo, desde qué imagen base partir, qué archivos copiar y qué puertos exponer.

¿Cuándo conviene usar Docker Compose en lugar de Kubernetes?

Docker Compose está diseñado para aplicaciones multicontenedor en un solo host – ideal para desarrollo, pruebas y despliegues pequeños. Kubernetes es una plataforma de orquestación completa para gestionar contenedores a gran escala en múltiples hosts, con funcionalidades como el autoescalado y las actualizaciones progresivas. Para entornos de pequeña escala, Compose es más sencillo; para cargas de trabajo en producción que requieren alta disponibilidad, Kubernetes es el estándar.

Read related articles

Stefano Corbetti in Contenerización 25 de agosto de 2026

Cómo funciona Repository Docker

¿No tienes claro cuál es la diferencia entre un repositorio Docker y un registro Docker? Esta guía explica cómo funcionan ambos, cómo etiquetar y hacer push de las imágenes, y cómo autenticarse de forma segura en Docker Hub y otros registros.