coldwa.st
Todas las guíasProgramaciónWebDatosHerramientasBases de datosHaskellConceptosCabal y buildsToolchainCompiladorRendimientoEditor y HLS

Programación · DevOps · contenedores

¿Qué es Docker?

Por ColdwastActualizado el 19 de junio de 20268 min de lectura#docker#containers#devops
Un buque portacontenedores cargado de contenedores apilados en un puerto, de noche
Un buque portacontenedores cargado de contenedores apilados en un puerto, de noche — Docker toma prestada la idea del contenedor marítimo: empaquetas una app una vez y se ejecuta igual en todas partes.

«Funciona en mi máquina» es uno de los chistes más viejos del software — y el problema que Docker se diseñó para eliminar. Docker empaqueta una aplicación junto con todo lo que necesita para ejecutarse, de modo que se comporta igual en un portátil, en la máquina de un compañero y en un servidor de producción. Esta guía explica qué es Docker, en qué se diferencian los contenedores de las máquinas virtuales, los conceptos que importan, y dónde encaja Docker junto a herramientas como Kubernetes.

La definición corta

Docker es una plataforma para construir, compartir y ejecutar aplicaciones dentro de contenedores. Un contenedor agrupa tu código con sus dependencias — bibliotecas, runtime, configuración — en una unidad aislada y portátil. Como el contenedor lleva su propio entorno, se ejecuta igual allá donde Docker esté instalado, eliminando la clase de errores de «funciona aquí pero no allá».

Contenedores vs máquinas virtuales

Ambos aíslan software, pero a niveles distintos. Una máquina virtual emula un ordenador completo, incluido su propio sistema operativo entero, sobre un hipervisor — potente, pero pesada: cada VM ocupa gigabytes y arranca despacio. Un contenedor comparte el núcleo del sistema operativo de la máquina anfitriona y solo empaqueta la app y sus dependencias. El resultado es mucho más ligero: los contenedores suelen ocupar megabytes, arrancan en segundos, y puedes ejecutar muchos más en el mismo hardware.

La contrapartida es el aislamiento. Las VM ofrecen una separación más fuerte porque cada una tiene su propio SO; los contenedores son más eficientes pero comparten el núcleo, así que el aislamiento es bueno más que absoluto. Muchos sistemas reales usan ambos — contenedores ejecutándose dentro de VM en la nube.

Un desarrollador con auriculares trabajando frente a un monitor lleno de código en una sala oscura iluminada de azul
Un desarrollador frente a un monitor lleno de código — Docker permite que la misma app en contenedor pase de este portátil a un servidor sin sorpresas.

Los conceptos clave

  • Imagen — una plantilla de solo lectura que define qué hay dentro de un contenedor: las capas de SO, tu app y sus dependencias. Construyes una imagen una vez y lanzas muchos contenedores a partir de ella.
  • Contenedor — una instancia en ejecución de una imagen. Es el proceso vivo y aislado; puedes iniciarlo, detenerlo y eliminarlo sin afectar a la imagen.
  • Dockerfile — una receta en texto plano que enumera los pasos para construir una imagen (partir de una base, copiar tu código, instalar dependencias, fijar el comando de arranque). Hace los builds reproducibles.
  • Registro — un almacén de imágenes. Docker Hub es el registro público más conocido; los equipos también gestionan privados. Haces push de las imágenes para compartirlas y pull para ejecutarlas.
  • Volumen — almacenamiento que vive fuera del ciclo de vida del contenedor, para que los datos sobrevivan cuando se reemplaza un contenedor. Los contenedores son desechables; los volúmenes conservan lo que debe persistir.

Cómo es un flujo de trabajo típico

Escribes un Dockerfile, lo construyes en una imagen, y ejecutas esa imagen como contenedor. En local quizá ejecutes un solo contenedor; en producción subes la imagen a un registro y la ejecutas en servidores. Como la imagen es el mismo artefacto en todas partes, la app que ejecutan tus compañeros y tus servidores es, byte a byte, la que probaste — que es justo el objetivo.

Por qué importa Docker

Hizo fáciles los entornos coherentes, y eso desbloqueó mucho: despliegues de servicio a servicio fiables, incorporación rápida (un comando en vez de una página de pasos de configuración), y la base de los pipelines CI/CD y los microservicios. Los contenedores son hoy la unidad de despliegue por defecto en la infraestructura moderna, por lo que todo el ecosistema — registros, orquestación, runtimes en la nube — habla «contenedor».

Docker vs Kubernetes

Se mencionan juntos a menudo pero resuelven problemas distintos. Docker construye y ejecuta contenedores individuales. Kubernetes es un orquestador: ejecuta y coordina muchos contenedores en muchas máquinas — los planifica, reinicia los que fallan, escala hacia arriba y hacia abajo, y los conecta en red. En resumen, Docker empaqueta y ejecuta un contenedor; Kubernetes gestiona una flota. Puedes usar Docker sin Kubernetes; Kubernetes ejecuta contenedores construidos según el mismo estándar que Docker popularizó. Consulta nuestra guía completa sobre Kubernetes — y en cualquier caso, tus contenedores necesitan un sitio donde ejecutarse, normalmente un VPS.

Las contrapartidas honestas

Docker no carece de coste. Los contenedores comparten el núcleo anfitrión, así que no son una frontera de seguridad dura como lo es una VM — las cargas sensibles pueden seguir queriendo aislamiento de nivel VM. Las aplicaciones con estado (bases de datos, cualquier cosa con datos locales importantes) requieren un diseño cuidadoso de volúmenes y copias de seguridad, ya que los contenedores están pensados para ser desechables. Y hay una curva de aprendizaje: imágenes, redes y volúmenes llevan tiempo de asimilar. Para la mayoría de equipos, sin embargo, la coherencia y la rapidez compensan.

FAQ

¿Es Docker una máquina virtual? No. Una VM emula un ordenador entero con su propio sistema operativo; un contenedor Docker comparte el núcleo del SO anfitrión y empaqueta solo la app y sus dependencias, lo que lo hace mucho más ligero y rápido de arrancar.

¿Es Docker gratis? Docker Engine, la tecnología base, es de código abierto y gratuito. Docker también ofrece planes de pago para su app Desktop y servicios en organizaciones grandes, pero puedes construir y ejecutar contenedores sin pagar.

¿Necesito Docker para usar Kubernetes? Docker el producto en concreto no, pero sí necesitas contenedores. Kubernetes orquesta contenedores construidos según estándares abiertos que Docker ayudó a establecer, así que las habilidades se transfieren directamente.

¿Qué es un Dockerfile? Un archivo en texto plano con los pasos para construir una imagen — de qué base partir, qué código copiar, qué dependencias instalar, y el comando a ejecutar. Hace los builds de imagen reproducibles y revisables.

Los contenedores son la unidad sobre la que se construyen los despliegues; las apps que contienen suelen exponer una API y se escriben en un IDE. Explora más explicaciones claras en nuestro índice de guías.

Preguntas frecuentes

¿Qué es Docker en términos sencillos?

Docker es una herramienta que empaqueta una aplicación junto con todo lo que necesita para ejecutarse — código, bibliotecas, runtime y configuración — en una única unidad portátil llamada contenedor. Ese contenedor se ejecuta igual en cualquier máquina con Docker instalado, de modo que el software se comporta de forma idéntica en el portátil de un desarrollador y en un servidor de producción.

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

Una máquina virtual emula un ordenador completo, incluido un sistema operativo entero, así que es grande (gigabytes) y lenta de arrancar pero muy aislada. Un contenedor comparte el núcleo del SO anfitrión y agrupa solo la app y sus dependencias, así que es pequeño (megabytes), arranca en segundos y es más eficiente, con un aislamiento bueno pero no absoluto. Muchos sistemas ejecutan contenedores dentro de VM para combinar ambos.

¿Cuál es la diferencia entre Docker y Kubernetes?

Docker construye y ejecuta contenedores individuales. Kubernetes es un sistema de orquestación que ejecuta y coordina muchos contenedores en muchas máquinas — planificación, escalado, reinicio y red. Docker gestiona un contenedor; Kubernetes gestiona una flota. Son complementarios, no competidores.

¿Se sigue usando Docker en 2026?

Sí. Los contenedores son la unidad estándar de despliegue en el software moderno, y el ecosistema — registros, pipelines CI/CD, runtimes en la nube y orquestadores como Kubernetes — está construido en torno al modelo de contenedor que Docker popularizó. El núcleo Docker Engine sigue siendo de código abierto y de uso amplio.

Guía independiente, mantenida por la comunidad. coldwa.st es un sitio de recursos de programación; este artículo es un texto explicativo nuevo y original sobre Docker y los contenedores. Los ejemplos reflejan herramientas de uso amplio; verifica los detalles en la documentación oficial de Docker.