Introducción
Este completo tutorial de Docker proporciona a los desarrolladores y administradores de sistemas los conocimientos esenciales para implementar la tecnología de contenedores. Al cubrir los conceptos fundamentales de Docker, los procedimientos de instalación y ejemplos prácticos, los alumnos adquirirán habilidades prácticas en la implementación moderna de software y técnicas de virtualización.
Conceptos Fundamentales de Docker
Introducción a los Fundamentos de Docker
Docker es una potente tecnología de contenedores que revoluciona la implementación de software y la virtualización de aplicaciones. Permite a los desarrolladores empaquetar aplicaciones con todas sus dependencias en unidades estandarizadas llamadas contenedores.
Conceptos Nucleares de la Tecnología de Contenedores
graph LR
A[Imagen Docker] --> B[Contenedor]
B --> C[Implementación de la Aplicación]
B --> D[Aislamiento]
| Concepto | Descripción |
|---|---|
| Imagen Docker | Paquete ligero y autoejecutable |
| Contenedor | Instancia ejecutable de una imagen |
| Dockerfile | Script que define la configuración de la imagen |
Arquitectura Básica de Docker
Los contenedores proporcionan virtualización ligera compartiendo el kernel del sistema host mientras mantienen el aislamiento de las aplicaciones. Este enfoque difiere de las máquinas virtuales tradicionales.
Instalación en Ubuntu 22.04
## Actualizar el índice de paquetes
sudo apt update
## Instalar dependencias
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Agregar la clave GPG de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar el repositorio
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Primer Ejemplo de Contenedor Docker
## Extraer la imagen Ubuntu
docker pull ubuntu:latest
## Ejecutar un contenedor interactivo
docker run -it ubuntu:latest /bin/bash
## Dentro del contenedor
apt update
apt install nginx -y
exit
Configuración del Entorno de Docker
Preparando Ubuntu 22.04 para la Instalación de Docker
graph LR
A[Actualización del Sistema] --> B[Instalación de Dependencias]
B --> C[Configuración del Repositorio de Docker]
C --> D[Instalación del Motor Docker]
D --> E[Configuración de Docker]
Requisitos del Sistema
| Requisito | Especificación |
|---|---|
| SO | Ubuntu 22.04 LTS |
| Arquitectura | 64 bits |
| Kernel | 5.10+ |
| RAM | Mínimo 2 GB |
Script de Instalación Completo de Docker
## Actualizar paquetes del sistema
sudo apt update && sudo apt upgrade -y
## Eliminar paquetes conflictivos
sudo apt remove docker docker-engine docker.io containerd runc
## Instalar dependencias necesarias
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
## Agregar la clave GPG oficial de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Configurar el repositorio estable
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] $(lsb-release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Instalar el motor Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
## Verificar la instalación
sudo docker --version
Configuración Post-Instalación
## Crear el grupo de usuarios docker
sudo groupadd docker
## Agregar el usuario actual al grupo docker
sudo usermod -aG docker $USER
## Habilitar el servicio Docker
sudo systemctl enable docker.service
sudo systemctl start docker.service
## Verificar la funcionalidad de Docker
docker run hello-world
Instalación de Docker Compose
## Descargar Docker Compose
sudo curl -L " -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## Aplicar permisos ejecutables
sudo chmod +x /usr/local/bin/docker-compose
## Verificar la instalación
docker-compose --version
Administración de Contenedores
Descripción General del Ciclo de Vida de los Contenedores
graph LR
A[Extraer Imagen] --> B[Creación del Contenedor]
B --> C[Inicio del Contenedor]
C --> D[Contenedor en Ejecución]
D --> E[Parada del Contenedor]
E --> F[Eliminación del Contenedor]
Comandos Básicos de Docker para Contenedores
| Comando | Función |
|---|---|
| docker run | Crear e iniciar contenedor |
| docker ps | Listar contenedores en ejecución |
| docker stop | Detener contenedor en ejecución |
| docker rm | Eliminar contenedor |
| docker exec | Ejecutar comando en contenedor |
Creación y Administración de Contenedores
## Extraer la imagen Ubuntu
docker pull ubuntu:latest
## Ejecutar contenedor interactivo
docker run -it --name my-ubuntu ubuntu:latest /bin/bash
## Listar todos los contenedores
docker ps -a
## Iniciar contenedor detenido
docker start my-ubuntu
## Detener contenedor en ejecución
docker stop my-ubuntu
## Eliminar contenedor
docker rm my-ubuntu
Operaciones Avanzadas con Contenedores
## Ejecutar contenedor en segundo plano
docker run -d --name nginx-server nginx:latest
## Mapear puerto de contenedor a host
docker run -p 8080:80 -d nginx:latest
## Inspeccionar detalles del contenedor
docker inspect nginx-server
## Ver registros del contenedor
docker logs nginx-server
## Ejecutar comando en contenedor en ejecución
docker exec -it nginx-server bash
Administración de Recursos de Contenedores
## Limitar recursos del contenedor
docker run -d \
--name limited-container \
--cpus="1" \
--memory="512m" \
nginx:latest
## Monitorizar el uso de recursos del contenedor
docker stats
Configuración de la Red de Contenedores
## Crear red personalizada
docker network create my-network
## Ejecutar contenedor en red específica
docker run --network=my-network -d nginx:latest
Resumen
Docker representa un enfoque revolucionario para la implementación de software, ofreciendo contenedores ligeros y portátiles que agilizan el desarrollo de aplicaciones y la gestión de la infraestructura. Al dominar los principios fundamentales de Docker, los procesos de instalación y las técnicas de administración de contenedores, los profesionales pueden mejorar significativamente sus capacidades de desarrollo e implementación de software en diversos entornos informáticos.



