Guía completa de Docker

guia completa de docker

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:

ObjetoQué representaPara qué sirve
ImagenPlantilla de solo lectura compuesta por capas.Define archivos y valores iniciales para crear contenedores.
ContenedorInstancia creada a partir de una imagen, con configuración y una capa escribible.Ejecutar un proceso aislado.
DockerfileArchivo de instrucciones de construcción.Crear una imagen propia y reproducible.
RegistroServicio que almacena imágenes.Descargar y compartir imágenes; Docker Hub es un ejemplo.
Volumen o montajeAlmacenamiento conectado al contenedor.Persistir datos o compartir archivos fuera de su capa escribible.
RedConectividad virtual entre contenedores y otros destinos.Definir cómo se comunican los servicios.
ComposeDefinició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-demo

docker 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

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.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *