Base
Introducción a Docker¶
Docker es una plataforma de contenedores que permite empaquetar aplicaciones y sus dependencias en contenedores ligeros y portables. Esto facilita el desarrollo, despliegue y escalado de aplicaciones.
🚀 Iniciar con Docker en 10 minutos¶
¿Nuevo en Docker? Comienza aquí:
- Tutorial oficial: Get started - Tu primer contenedor en minutos
- Play with Docker - Entorno interactivo online gratuito
- Docker Cheat Sheet - Comandos esenciales
Conceptos fundamentales¶
Contenedores¶
Los contenedores son entornos aislados que contienen todo lo necesario para ejecutar una aplicación.
Imágenes¶
Las imágenes son plantillas de solo lectura que se utilizan para crear contenedores.
Dockerfile¶
Un Dockerfile es un script que contiene instrucciones para construir una imagen.
# Dockerfile de ejemplo
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Comandos básicos¶
Gestión de imágenes¶
# Construir una imagen
docker build -t mi-aplicacion .
# Listar imágenes
docker images
# Eliminar una imagen
docker rmi mi-aplicacion
Gestión de contenedores¶
# Ejecutar un contenedor
docker run -d -p 8080:80 mi-aplicacion
# Listar contenedores
docker ps
# Detener un contenedor
docker stop <container_id>
# Eliminar un contenedor
docker rm <container_id>
Docker Compose¶
Docker Compose permite definir y ejecutar aplicaciones multi-contenedor.
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
db:
image: postgres:13
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Casos de uso¶
- Desarrollo local
- Despliegue de aplicaciones
- Microservicios
- CI/CD pipelines
Próximos pasos¶
En las siguientes secciones exploraremos:
- Optimización de imágenes
- Redes de Docker
- Volúmenes y persistencia
- Seguridad en contenedores
- Orquestación con Kubernetes
Preguntas frecuentes (FAQs)¶
¿Cuál es la diferencia entre una imagen y un contenedor?
Una imagen es un paquete inmutable que contiene el código de la aplicación, dependencias y configuración. Un contenedor es una instancia ejecutable de una imagen.
¿Cómo compartir datos entre contenedores?
Usa volúmenes nombrados (docker volume create mi-volumen) o bind mounts (-v /host/path:/container/path). Para datos persistentes, siempre usa volúmenes nombrados.
¿Por qué mi contenedor no puede acceder a internet?
Verifica la configuración de red con docker network ls e docker inspect <container>. Asegúrate de que Docker esté usando el DNS correcto o configura --dns en el comando docker run.
¿Cómo reducir el tamaño de mis imágenes Docker?
- Usa imágenes base pequeñas (alpine)
- Combina comandos RUN en capas
- Elimina archivos temporales en el mismo layer
- Usa .dockerignore para excluir archivos innecesarios
¿Cuál es la diferencia entre CMD y ENTRYPOINT?
- CMD: Define el comando por defecto que se ejecuta cuando el contenedor inicia. Puede ser sobreescrito.
- ENTRYPOINT: Define el ejecutable principal. Los argumentos de CMD se pasan como parámetros al ENTRYPOINT.
Recursos adicionales¶
Videos tutoriales¶
Video: Introducción completa a Docker en español (Docker Fundamentals)
Documentación oficial¶
- Sitio web oficial: docker.com
- Documentación: docs.docker.com
- GitHub: github.com/docker
- Docker Hub: hub.docker.com
Comunidad¶
- Reddit: r/docker
- Stack Overflow: stackoverflow.com/questions/tagged/docker
- Foros oficiales: forums.docker.com
¿Buscas comandos rápidos?
Consulta nuestras Recetas rápidas para comandos copy-paste comunes.
¿Problemas con Docker?
Revisa nuestra sección de troubleshooting para soluciones a errores comunes.