Contenido

Tutorial de Docker: qué es Docker, imágenes y contenedores

Logotipo de la ballena de Docker
Docker
Desarrollador
Docker, Inc.
Primer lanzamiento
2013
Lenguaje de programación
Go
Licencia
Docker Engine es software de código abierto (Apache License 2.0); Docker Desktop es software comercial, gratuito para uso personal y pequeñas empresas
Sitio web oficial
www.docker.com
Documentación oficial
docs.docker.com

Docker fue lanzado en 2013 por Docker, Inc. (antes dotCloud). Docker Engine, su componente principal, es un proyecto de código abierto desarrollado en Go. Consulta la lista completa de sitios web, documentación y código fuente en los recursos oficiales de la página principal del tutorial.

Qué problema resuelve Docker

Casi todas las personas que programan se han encontrado con esta situación: un programa funciona perfectamente en su propio equipo, pero falla en el equipo de un compañero o en un servidor. La causa suele ser que los entornos son diferentes:

  • Las versiones de Python no coinciden (tú usas la 3.14 y el servidor todavía tiene la 3.10)
  • Falta una biblioteca del sistema
  • La configuración, las variables de entorno o las rutas de las carpetas son diferentes
  • Dos proyectos en el mismo servidor necesitan versiones distintas del mismo paquete

La solución tradicional consiste en escribir instrucciones de instalación muy largas y seguirlas paso a paso en cada máquina. Pero siempre hay alguien que se salta algún paso.

Docker propone empaquetar el programa junto con su entorno de ejecución. El paquete se ejecuta de la misma manera en cualquier máquina que tenga Docker instalado. Las instrucciones de instalación se reducen a un solo comando:

docker run -d -p 8080:80 nginx:1.30

Tanto en Windows y macOS como en un servidor Linux, este comando inicia un servidor web nginx idéntico.

Tres conceptos clave

ConceptoQué esComparación
Imagen (Image)Una plantilla de solo lectura que incluye el programa, las bibliotecas y la configuraciónUn disco de instalación
Contenedor (Container)Una instancia en ejecución iniciada a partir de una imagenUn programa instalado desde el disco y en ejecución
RegistryUn lugar donde se almacenan y comparten imágenes, como Docker HubUna tienda de aplicaciones

Imágenes y contenedores

Una imagen puede iniciar varios contenedores
Una imagen está formada por varias capas de solo lectura. Cada docker run crea un contenedor nuevo, con su propia capa de escritura, proceso y red
  • Una imagen puede iniciar muchos contenedores a la vez, y estos no interfieren entre sí.
  • Los archivos que creas o modificas dentro de un contenedor se escriben en su propia capa de escritura y no modifican la imagen.
  • Si eliminas el contenedor, la imagen sigue ahí y puedes iniciar otro cuando quieras.
  • Como la capa de escritura también desaparece al eliminar el contenedor, los datos que quieras conservar (por ejemplo, los de una base de datos) deben guardarse aparte, en un Volume.

Las imágenes se construyen capa por capa

Las imágenes están formadas por varias capas (layer). Por ejemplo, una imagen para un sitio web con Node.js (a la izquierda en la ilustración anterior) tiene:

  1. Una capa del sistema operativo base (por ejemplo, Debian)
  2. Una capa del entorno de ejecución de Node.js
  3. Una capa con los paquetes instalados (npm install)
  4. Una capa con tu código

Distintas imágenes pueden compartir las mismas capas inferiores. Si diez imágenes se basan en Debian, la capa de Debian se guarda una sola vez en el disco y solo se descarga una vez. Por eso conviene prestar atención al orden de los comandos cuando escribas un Dockerfile. Después de instalar Docker en la siguiente sección, verás cómo se descargan las imágenes capa por capa.

Registry

Un Registry es un servidor que almacena imágenes. El más utilizado es Docker Hub (docker.io). Si ejecutas docker run nginx sin especificar una dirección, la imagen se descarga desde Docker Hub. Otros registros habituales son ghcr.io, de GitHub, y los que ofrecen las distintas plataformas en la nube. También puedes subir tus propias imágenes; consulta Subir una imagen a Docker Hub.

Arquitectura de Docker

Arquitectura de Docker: Client, Docker Engine y Registry
El comando docker se comunica con Docker Engine a través de la API. Engine descarga imágenes y crea y administra contenedores

Cuando escribes el comando docker en la terminal, intervienen tres componentes:

ComponenteDescripción
Docker CLI (Client)La herramienta de línea de comandos docker que usas. No ejecuta contenedores por sí misma; envía las solicitudes a Engine
Docker Engine (dockerd)Un servicio que se ejecuta en segundo plano y se encarga de descargar imágenes, crear contenedores y administrar redes y Volume
RegistryEl lugar donde se almacenan las imágenes. Engine las descarga (pull) o las sube (push) desde aquí

CLI y Engine son componentes separados. Por eso puedes usar el comando docker en tu portátil para controlar el Engine de un servidor remoto (consulta Desplegar en un host en la nube). En la siguiente sección, al ejecutar docker version, verás la información de versión de Client y Server: son esos dos componentes.

En Windows y macOS, Docker Engine necesita un entorno Linux para ejecutarse. Docker Desktop crea automáticamente una máquina virtual Linux ligera para ejecutar Engine e instala también herramientas como CLI y Compose. En Linux, basta con instalar Docker Engine directamente.

En qué se diferencian los contenedores y las máquinas virtuales

Comparación de las arquitecturas de contenedores y máquinas virtuales
Los contenedores comparten el kernel del sistema operativo del host; cada máquina virtual incluye un sistema operativo completo

Una máquina virtual (VM) emula un ordenador completo y cada una tiene su propio sistema operativo. Los contenedores comparten el kernel del sistema operativo del host y aíslan solo lo que necesita el programa (sistema de archivos, procesos y red).

ContenedoresMáquinas virtuales
Tiempo de inicioNormalmente menos de 1 segundoNormalmente de decenas de segundos a varios minutos
TamañoDe unos MB a cientos de MBNormalmente varios GB
Nivel de aislamientoA nivel de proceso; comparten el kernelSistema operativo completo; aislamiento máximo
Cantidad que puede ejecutarse en el mismo hostMuchosMenos
¿Pueden ejecutar distintos sistemas operativos?Solo sistemas con el mismo kernel que el host (los contenedores Linux necesitan un kernel Linux)Sí; por ejemplo, Windows en un host Linux

Los contenedores no están pensados para sustituir a las máquinas virtuales. Muchos servicios en la nube ejecutan contenedores dentro de máquinas virtuales; a menudo se usan ambos.

Para qué sirve Docker

  • Entorno de desarrollo: inicia bases de datos, cachés y otros servicios con un solo comando, sin instalar un montón de software en tu equipo.
  • Unificar entornos: todo el equipo, el entorno de pruebas y el de producción usan la misma imagen.
  • Despliegue: empaqueta el programa en una imagen y ponlo en marcha en cualquier servidor con docker run. Para volver a una versión anterior, solo tienes que usar la imagen antigua.
  • Probar software: si quieres probar una base de datos u otra herramienta, inicia un contenedor. Cuando ya no lo necesites, elimínalo y tu equipo seguirá limpio.

Resumen

  • Docker empaqueta el programa junto con su entorno y resuelve el problema de las «diferencias entre entornos»
  • Una imagen es una plantilla de solo lectura, un contenedor es una instancia en ejecución y un Registry es el lugar donde se almacenan las imágenes
  • El comando docker (Client) envía solicitudes a Docker Engine para que las ejecute
  • Los contenedores son más ligeros y arrancan más rápido que las máquinas virtuales, pero comparten el kernel del host

En la siguiente sección instalaremos Docker en tu equipo.

Ejercicios

Ejercicio 1: explica en una frase la diferencia entre una imagen y un contenedor.

Respuesta

Una imagen es una plantilla de solo lectura (como un disco de instalación); un contenedor es una instancia en ejecución iniciada a partir de una imagen (como un programa instalado y en ejecución). Una imagen puede iniciar varios contenedores.

Ejercicio 2: ¿Qué ocurre con los archivos que has creado dentro de un contenedor cuando lo eliminas? ¿Cómo puedes guardar los datos que necesitas conservar?

Respuesta

Desaparecen junto con la capa de escritura del contenedor. Guarda los datos que quieras conservar en un Volume, cuyo ciclo de vida es independiente del del contenedor.

Preguntas frecuentes

¿Docker es gratis?

Docker Engine y CLI son de código abierto y gratuitos. Docker Desktop es gratis para uso personal, educación, proyectos de código abierto no comerciales y pequeñas empresas. Las empresas más grandes necesitan una suscripción de pago. Consulta [Instalar Docker](/es/docker/install/).

¿Necesito saber Linux antes de aprender Docker?

Te resultará más fácil si conoces algunos comandos básicos (cd, ls y editar archivos), pero no hace falta que tengas mucha experiencia. Este tutorial explica todos los comandos; solo tienes que seguirlo.

¿Qué relación hay entre Docker y Kubernetes?

Docker se encarga de crear imágenes y ejecutar contenedores en un solo host. Kubernetes programa, escala y administra muchos contenedores en varios hosts. Primero aprende Docker y después Kubernetes.

Actualizado 14 de octubre de 2026