👉 Para Quién Va Dirigido
Esta guía está diseñada para desarrolladores y administradores de sistemas que ya conocen Docker y necesitan una referencia rápida sobre los comandos esenciales. Es una ayuda de memoria para agilizar el trabajo diario con contenedores.
🌊 Introducción a Docker
Docker es una plataforma de contenedores que permite ejecutar aplicaciones de forma aislada y portátil. Con Docker, los desarrolladores pueden empaquetar software con todas sus dependencias en imágenes ligeras y eficientes, asegurando que se ejecuten de manera uniforme en cualquier entorno.
🔢 Componentes Clave de Docker
1. Imágenes (Images)
Las imágenes de Docker son plantillas de solo lectura que contienen el sistema operativo, bibliotecas y el código necesario para ejecutar una aplicación.
2. Contenedores (Containers)
Los contenedores son instancias en ejecución de una imagen de Docker. Son efímeros, lo que significa que cualquier cambio realizado dentro del contenedor se pierde al detenerlo, a menos que se use persistencia de datos.
3. Registros (Registries)
Los registros almacenan imágenes de Docker y permiten compartirlas con otros usuarios. Docker Hub es el registro público más utilizado.
4. Volúmenes (Volumes)
Los volúmenes permiten la persistencia de datos en Docker, separando los archivos de los contenedores para evitar la pérdida de información.
5. Redes (Networks)
Las redes en Docker facilitan la comunicación entre contenedores dentro de un mismo entorno de trabajo.
🔍 Diferencias Claves en Docker
Dockerfile vs. Docker Compose
- Dockerfile: Define la configuración y entorno de un contenedor individual.
- Docker Compose: Permite orquestar múltiples contenedores definidos en un solo archivo YAML.
COPY vs. ADD en Dockerfile
COPY
: Copia archivos desde el sistema anfitrión al contenedor.ADD
: Hace lo mismo queCOPY
, pero también permite descargar archivos desde URLs y descomprimir archivos comprimidos.
Ejemplo de uso en Dockerfile:
🌐 Puertos en Docker
Docker permite mapear puertos de contenedores a puertos del sistema anfitrión. Ejemplos:
Los puertos comunes en Docker incluyen:
- 80, 443: Para servidores web como Nginx o Apache.
- 3306: Para bases de datos MySQL.
- 5432: Para PostgreSQL.
- 6379: Para Redis.
🌐 Comandos Básicos en Docker
1. Ejecutar y gestionar contenedores
2. Construir y gestionar imágenes
3. Administrar contenedores
4. Volúmenes para persistencia de datos
5. Redes en Docker
🚀 Docker Compose
Docker Compose permite definir y ejecutar aplicaciones Docker con múltiples contenedores mediante un archivo docker-compose.yml
.
Ejemplo de docker-compose.yml
para una aplicación con Nginx y PostgreSQL:
Para ejecutar:
📌 Plantilla Base para un Proyecto Docker
Ejemplo de un Dockerfile
básico para iniciar un entorno con Node.js:
🌟 Buenas Prácticas en Docker
- Evitar usar
FROM node:latest
,
ya que podría causar inconsistencias con nuevas versiones. - No copiar archivos directamente desde repositorios desactualizados.
- Versionar las imágenes utilizando etiquetas (
tags
) para evitar problemas de compatibilidad. - En
docker-compose.yml
, ya no es necesario especificar la versión, ya que Docker Compose detecta automáticamente la configuración adecuada. - Usar múltiples
FROM
en Dockerfile si se requieren diferentes entornos de compilación y ejecución (multistage builds
). - No ejecutar procesos como
root
dentro del contenedor, es mejor crear un usuario específico. - Minimizar el tamaño de las imágenes utilizando imágenes base más ligeras como
alpine
. - Eliminar contenedores, volúmenes y redes innecesarias con
docker system prune
para liberar espacio.
🏆 Conclusión
Docker es una herramienta fundamental para el desarrollo moderno, permitiendo crear entornos consistentes y replicables. Dominar sus comandos y buenas prácticas garantiza una mejor gestión de aplicaciones en contenedores.