Docker es una plataforma de código abierto diseñada para empaquetar, distribuir y ejecutar aplicaciones dentro de entornos aislados denominados contenedores. Al encapsular el software junto con todas sus dependencias (librerías, archivos de configuración y binarios), se garantiza el comportamiento idéntico del sistema sin importar si se ejecuta en la computadora local de un desarrollador, en un servidor de pruebas o en la infraestructura de la nube.
Es común confundir el software de contenedores con la virtualización tradicional, pero sus arquitecturas internas operan de manera muy distinta:
Para dominar el ecosistema, se debe asimilar la analogía de la gastronomía o la construcción:
Nota: Para entornos Linux (Ubuntu/Debian), es indispensable que la virtualización esté habilitada en la BIOS del procesador antes de iniciar.
# Actualizar el índice de paquetes locales sudo apt update && sudo apt upgrade -y # Instalar dependencias previas de red y seguridad sudo apt install apt-transport-https ca-certificates curl software-properties-common -y # Agregar la clave criptográfica oficial de Docker curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # Instalar el motor de Docker y su interfaz de comandos sudo apt install docker-ce docker-ce-cli containerd.io -y # Añadir tu usuario al grupo docker para evitar usar 'sudo' en cada instrucción sudo usermod -aG docker $USER newgrp docker
Si al ejecutar docker run hello-world se muestra el mensaje "Cannot connect to the Docker
daemon...", significa que el motor está apagado. Se soluciona forzando el inicio del servicio del
sistema:
sudo systemctl start docker
La línea de comandos permite inspeccionar el estado del motor y administrar los ciclos de vida de los componentes:
| Comando | Acción / Propósito |
|---|---|
docker --version |
Muestra la versión de Docker instalada en el sistema. |
docker images |
Lista todas las imágenes descargadas o compiladas localmente. |
docker ps |
Lista únicamente los contenedores que se están ejecutando activamente. |
docker ps -a |
Muestra el historial completo de contenedores (activos y detenidos). |
docker start [ID_O_NOMBRE] |
Vuelve a encender un contenedor que se encontraba apagado. |
docker stop [ID_O_NOMBRE] |
Apaga de manera ordenada un contenedor en ejecución. |
docker logs [ID] |
Muestra las salidas de consola e historial impreso por el contenedor. |
docker logs -f [ID] |
Inspecciona los logs en tiempo real manteniendo la consola abierta (Follow). |
docker exec -it [ID] sh |
Abre una terminal interactiva (shell) dentro de un contenedor activo. |
Las distribuciones ligeras como Alpine Linux son ampliamente utilizadas en entornos profesionales debido a que pesan pocos megabytes, reduciendo drásticamente el tamaño final de la imagen.
# 1. Imagen base oficial ligera FROM alpine:latest # 2. Establecer el directorio de trabajo interno (creará la carpeta si no existe) WORKDIR /app # 3. Copiar archivos locales al directorio del contenedor COPY ./html/index.html /app/ COPY ./html/script.sh /app/ # 4. Ejecutar comandos de infraestructura en la construcción (Instalar Nginx) RUN apk add --no-cache nginx # 5. Otorgar permisos de ejecución al script operativo RUN chmod +x /app/script.sh # 6. Documentar el puerto de red expuesto internamente EXPOSE 80 # 7. Comando definitivo por defecto al iniciar el contenedor CMD ["/app/script.sh"]
Docker Compose es una herramienta que permite definir y correr aplicaciones de múltiples contenedores
utilizando un único archivo de configuración estructurado en formato YAML
(docker-compose.yml).
version: '3.8'
services:
web-server:
image: nginx:alpine
container_name: servidor_web_frontend
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- red-aplicacion
backend-task:
image: alpine:latest
container_name: contenedor_soporte_alpine
volumes:
- ./html:/html
command: sh -c "while true; do sleep 1000; done"
networks:
- red-aplicacion
networks:
red-aplicacion:
driver: bridge
docker compose up -d
docker compose down