📝 BLOG

Docker y Containerización: Conceptos Básicos y Uso

Docker empaqueta aplicaciones en contenedores para un despliegue consistente y portátil. Esta guía cubre los fundamentos de Docker, la escritura de Dockerfile y la gestión de contenedores.

Actualizado:

Preparado por: Gsetsoft

Docker y Containerización: Conceptos Básicos y Uso

¿Qué es Docker?

Docker es una plataforma que empaqueta aplicaciones y sus dependencias en contenedores. Los contenedores son entornos de ejecución ligeros y aislados.

VM vs Container: Las máquinas virtuales ejecutan un sistema operativo completo (GBs). Los contenedores comparten el kernel del SO host y ocupan MBs.

Consistencia: Resuelve el problema de 'funciona en mi máquina'. Los entornos de desarrollo, prueba y producción usan el mismo contenedor.

Portabilidad: Los contenedores funcionan en cualquier plataforma compatible con Docker (Linux, Windows, Mac, cloud).

Conceptos Fundamentales de Docker

Image: Plantilla para un contenedor. Almacenada como capas de solo lectura. Construida a partir de un Dockerfile.

Container: Instancia en ejecución de una imagen. Cada contenedor se ejecuta como un proceso aislado.

Dockerfile: Archivo de texto que define cómo construir una imagen. Contiene instrucciones como FROM, RUN, COPY, CMD.

Registry: Repositorio que almacena y distribuye imágenes. Docker Hub es el registry público más popular.

Volume: Almacenamiento usado para persistir datos del contenedor. Los datos se conservan incluso si el contenedor se elimina.

Escritura de Dockerfile

FROM node:18-alpine: Use Node.js 18 (Alpine Linux) como imagen base. Alpine es una imagen base de tamaño pequeño.

WORKDIR /app: Establezca el directorio de trabajo en /app. Todos los comandos posteriores se ejecutan en este directorio.

COPY package*.json ./: Copie package.json y package-lock.json. Instale dependencias con RUN npm install.

COPY . .: Copie todo el código fuente. Cree el build de producción con RUN npm run build.

EXPOSE 3000: Especifique que el contenedor escucha en el puerto 3000. Defina el comando a ejecutar cuando el contenedor inicie con CMD ["npm", "start"].

Comandos Básicos de Docker

docker build -t myapp:1.0 .: Construya la imagen desde Dockerfile. Etiquete la imagen con nombre:versión usando -t.

docker run -p 3000:3000 myapp:1.0: Ejecute el contenedor. Mapee el puerto del host al puerto del contenedor con -p.

docker ps: Liste los contenedores en ejecución. docker ps -a: Liste todos los contenedores (incluyendo los detenidos).

docker stop <container_id>: Detenga el contenedor. docker rm <container_id>: Elimine el contenedor.

docker images: Liste las imágenes locales. docker rmi <image_id>: Elimine la imagen.

Docker Compose

Docker Compose es una herramienta para definir y gestionar aplicaciones multi-contenedor. Configurado con archivo docker-compose.yml.

Servicios: Cada servicio es un contenedor. Defina servicios como web (frontend), api (backend), db (base de datos).

Volumes: Defina volumes para persistencia de datos. networks: Cree networks para comunicación entre servicios.

docker compose up: Inicie todos los servicios. docker compose down: Detenga y elimine todos los servicios.

docker compose up -d: Ejecute en modo detached (segundo plano). docker compose logs -f: Siga los logs.

Mejores Prácticas

Imágenes pequeñas: Use imágenes base Alpine o distroless. Elimine dependencias de build de la imagen final con multi-stage build.

Layer caching: COPY dependencias (que cambian raramente) primero, código (que cambia frecuentemente) después. Esto optimiza el build cache.

.dockerignore: Ignore archivos innecesarios (node_modules, .git, logs). Esto reduce el build context.

Seguridad: Use usuario non-root en lugar de root. Cree usuario con RUN adduser --disabled-password appuser.

Health check: Use la instrucción HEALTHCHECK para realizar verificación de salud del contenedor. Docker reinicia automáticamente los contenedores unhealthy.

Tu elección de privacidad

Las cookies esenciales permiten seguridad y sesiones. También contamos visitas básicas; con permiso activamos análisis adicionales. Política de cookies