Saltar a contenido

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í:

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

Comunidad


¿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.