Docker permite empaquetar una aplicación con sus dependencias en una imagen y ejecutar esa imagen como uno o varios contenedores. En Linux, los contenedores aíslan procesos y recursos, pero comparten el kernel del entorno anfitrión; no son máquinas virtuales con un sistema operativo completo. En macOS y Windows, Docker Desktop proporciona el entorno Linux que necesitan muchos contenedores.
Esta guía completa de Docker explica cómo se conectan el cliente, el daemon, las imágenes, los contenedores, los volúmenes, las redes y Compose. También muestra un flujo pequeño para que puedas relacionar cada concepto con lo que sucede al ejecutar un contenedor.
🐳 Si quieres aprender más de Docker, visita el curso de Docker gratis.
Qué resuelve Docker y qué no
Una imagen reúne el sistema de archivos y la configuración que necesita una aplicación. Compartir esa imagen entre desarrollo, pruebas y despliegue reduce diferencias de dependencias y configuración. El resultado sigue dependiendo de la arquitectura compatible, de los permisos, de la configuración del host y de los servicios externos: Docker no convierte cualquier aplicación en algo idéntico en todos los sistemas.
La separación también tiene límites. Los contenedores comparten recursos del host y requieren configuración adecuada de permisos, redes, límites y almacenamiento. Para cargas que necesitan un kernel independiente o aislamiento de otra clase, evalúa máquinas virtuales u otras opciones además de contenedores.
Cómo funciona la arquitectura de Docker
Docker utiliza un modelo cliente-servidor. El comando docker y Docker Compose actúan como clientes: envían peticiones a la API del Docker daemon, dockerd. El daemon coordina operaciones como construir, descargar y ejecutar imágenes, además de administrar contenedores, redes y volúmenes. El cliente puede hablar con un daemon local o con uno remoto.
El flujo básico es: solicitas una operación desde el cliente, el daemon resuelve sus dependencias y aplica la configuración, y luego consultas el estado o los registros. Los detalles internos de ejecución pueden variar según la plataforma y la versión de Docker, pero la separación entre cliente, API y daemon explica por qué un comando puede fallar aunque la sintaxis sea correcta: también debe estar disponible y accesible el daemon.
Objetos principales de Docker
Conviene distinguir el papel de cada objeto antes de administrar un sistema:
| Objeto | Qué representa | Para qué sirve |
|---|---|---|
| Imagen | Plantilla de solo lectura compuesta por capas. | Define archivos y valores iniciales para crear contenedores. |
| Contenedor | Instancia creada a partir de una imagen, con configuración y una capa escribible. | Ejecutar un proceso aislado. |
| Dockerfile | Archivo de instrucciones de construcción. | Crear una imagen propia y reproducible. |
| Registro | Servicio que almacena imágenes. | Descargar y compartir imágenes; Docker Hub es un ejemplo. |
| Volumen o montaje | Almacenamiento conectado al contenedor. | Persistir datos o compartir archivos fuera de su capa escribible. |
| Red | Conectividad virtual entre contenedores y otros destinos. | Definir cómo se comunican los servicios. |
| Compose | Definición declarativa de una aplicación con varios servicios. | Gestionar juntos contenedores, redes y volúmenes del proyecto. |
Flujo de trabajo: de una imagen a un contenedor
Este ejemplo descarga una imagen de Nginx, crea y arranca un contenedor, publica el puerto 80 del contenedor en el puerto 8080 del host y después lo detiene y elimina. Si el puerto 8080 ya está ocupado, elige otro puerto libre.
docker pull nginx:alpine
docker image ls
docker run -d --name guia-demo -p 8080:80 nginx:alpine
docker ps
docker stop guia-demo
docker rm guia-demodocker run combina la creación y el arranque. Si la imagen no está disponible localmente, Docker intenta descargarla desde el registro configurado. docker ps muestra los contenedores en ejecución; al detener y eliminar este contenedor no se elimina la imagen de Nginx ni un volumen externo.
Datos, redes y ciclo de vida
Los archivos que un proceso cambia dentro del contenedor quedan en su capa escribible. Esa capa pertenece a esa instancia: al eliminarla se pierden esos cambios. Para datos que deben sobrevivir a la sustitución del contenedor, conecta un volumen o un bind mount y define copias de seguridad para la información importante.
La red también forma parte de la configuración del contenedor. En una red Docker adecuada, los servicios pueden comunicarse sin depender de direcciones IP fijas; la publicación de puertos permite que un cliente externo llegue a un servicio. La instrucción EXPOSE de un Dockerfile documenta un puerto, pero por sí sola no lo publica en el host.
Ideas clave antes de continuar
- Una imagen es una plantilla; un contenedor es una instancia que puede crearse, detenerse y eliminarse.
- El daemon realiza el trabajo solicitado por el cliente y puede ser local o remoto.
- Los cambios en la capa escribible no sustituyen un plan de persistencia; usa volúmenes o montajes para los datos que deban conservarse.
- Docker facilita empaquetar y ejecutar aplicaciones, pero no elimina la necesidad de controlar permisos, redes, recursos y secretos.
Lecciones relacionadas del curso Docker
- Qué es Docker y para qué sirve
- Qué es un Dockerfile
- Qué es un contenedor Docker
- Docker Compose
- Volúmenes en Docker
Documentación oficial
Con estos conceptos puedes seguir cada lección del curso sabiendo qué componente interviene y qué cambios persisten. El índice del curso reúne los temas desde los fundamentos hasta la operación y el diagnóstico.

