Introducción
Este completo tutorial de contenedores Docker proporciona a los desarrolladores y profesionales de TI una guía fundamental para comprender, instalar y gestionar aplicaciones contenedorizadas. Al explorar los conceptos centrales de los contenedores, los procedimientos de instalación y los comandos prácticos, los participantes adquirirán habilidades prácticas en las tecnologías modernas de despliegue de software.
Conceptos Básicos de Contenedores Docker
Introducción a la Tecnología de Contenedores
Los contenedores Docker representan un enfoque revolucionario para el despliegue de software y la gestión de aplicaciones. La contenedorización permite a los desarrolladores empaquetar aplicaciones con todo su entorno de ejecución, garantizando un rendimiento consistente en diferentes plataformas informáticas.
Conceptos Fundamentales de los Contenedores Docker
Los contenedores Docker son paquetes ejecutables, autónomos y ligeros que incluyen todo lo necesario para ejecutar una aplicación: código, entorno de ejecución, herramientas del sistema, bibliotecas y configuraciones. A diferencia de las máquinas virtuales tradicionales, los contenedores comparten el kernel del sistema host, lo que los hace más eficientes y rápidos de iniciar.
graph TD
A[Código de la Aplicación] --> B[Contenedor Docker]
B --> C[Despliegue Consistente]
B --> D[Entorno Aislado]
Características Clave de los Contenedores
| Característica | Descripción |
|---|---|
| Portabilidad | Funcionamiento consistente en diferentes entornos |
| Ligereza | Consumo mínimo de recursos |
| Escalabilidad | Fácil replicación y escalado |
| Aislamiento | Entornos de aplicación separados |
Instalación de Contenedores Docker 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
## Añadir 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)] $(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
Comandos Básicos de Contenedores Docker
## Extraer una imagen de Ubuntu
docker pull ubuntu:latest
## Ejecutar un contenedor interactivo
docker run -it ubuntu:latest /bin/bash
## Listar contenedores en ejecución
docker ps
## Listar todos los contenedores
docker ps -a
Casos de Uso de los Contenedores Docker
Los contenedores Docker son ideales para arquitecturas de microservicios, integración continua/despliegue continuo (CI/CD), aplicaciones nativas de la nube y estandarización del entorno de desarrollo.
Conectividad de Contenedores
Arquitectura de Red Docker
Docker proporciona múltiples modos de red que permiten que los contenedores se comuniquen entre sí y con redes externas. Comprender estos métodos de conectividad es crucial para la gestión eficaz de contenedores y el despliegue de aplicaciones.
graph LR
A[Host Docker] --> B[Red Puente]
B --> C[Contenedor 1]
B --> D[Contenedor 2]
A --> E[Red Host]
A --> F[Red Overlay]
Tipos de Redes en Docker
| Tipo de Red | Descripción | Caso de Uso |
|---|---|---|
| Puente | Modo de red predeterminado | Comunicación aislada entre contenedores |
| Host | Acceso directo a la red del host | Escenarios de alto rendimiento |
| Overlay | Comunicación de red multi-host | Sistemas distribuidos |
| Macvlan | Conexión directa a la red física | Requisitos específicos de red |
Creación de Redes Docker Personalizadas
## Crear una red de puente
docker network create --driver bridge my_custom_network
## Listar redes disponibles
docker network ls
## Inspeccionar detalles de la red
docker network inspect my_custom_network
Métodos de Conectividad de Red de Contenedores
## Ejecutar contenedor con red específica
docker run -d --name web_server --network my_custom_network nginx
## Conectar contenedor en ejecución a la red
docker network connect my_custom_network existing_container
## Desconectar contenedor de la red
docker network disconnect my_custom_network existing_container
Mapeado y Exposición de Puertos
## Mapear puerto de contenedor a puerto del host
docker run -p 8080:80 nginx
## Exponer múltiples puertos
docker run -p 8080:80 -p 443:443 web_application
Acceso al Shell del Contenedor
## Acceso interactivo al shell
docker exec -it container_name /bin/bash
## Ejecutar comando en contenedor en ejecución
docker exec container_name ls /app
Técnicas de Comunicación entre Contenedores
Los contenedores pueden comunicarse a través de:
- Redes compartidas
- Variables de entorno
- Montajes de volumen
- Configuraciones de Docker Compose
Administración de Contenedores
Gestión del Ciclo de Vida de los Contenedores
Los contenedores Docker tienen etapas de ciclo de vida distintas que requieren una gestión y supervisión sistemáticas. Comprender estas etapas permite un despliegue y mantenimiento eficientes de los contenedores.
graph LR
A[Extraer Imagen] --> B[Creación de Contenedor]
B --> C[Inicio de Contenedor]
C --> D[Contenedor en Ejecución]
D --> E[Parada de Contenedor]
E --> F[Eliminación de Contenedor]
Comandos del Ciclo de Vida de los Contenedores
| Comando | Función | Ejemplo |
|---|---|---|
| docker pull | Descargar imagen | docker pull ubuntu |
| docker create | Crear contenedor | docker create nginx |
| docker start | Iniciar contenedor | docker start container_id |
| docker stop | Detener contenedor | docker stop container_id |
| docker rm | Eliminar contenedor | docker rm container_id |
Gestión de Recursos de Contenedores
## Listar contenedores en ejecución con el uso de recursos
docker stats
## Limitar recursos del contenedor
docker run -d --cpus=1 --memory=512m nginx
## Actualizar recursos del contenedor
docker update --cpus=2 --memory=1g container_name
Técnicas de Monitorización de Contenedores
## Ver registros del contenedor
docker logs container_name
## Monitorización de registros en tiempo real
docker logs -f container_name
## Inspeccionar metadatos del contenedor
docker inspect container_name
Copia de Seguridad y Recuperación de Contenedores
## Crear una instantánea de la imagen del contenedor
docker commit container_name backup_image
## Exportar el contenedor a un archivo tar
docker export container_name > container_backup.tar
## Importar el contenedor desde el archivo
docker import container_backup.tar restored_image
Administración Avanzada de Contenedores
## Eliminar contenedores no utilizados
docker container prune
## Eliminar todos los contenedores detenidos
docker rm $(docker ps -a -q)
## Limpiar imágenes huérfanas
docker image prune
Conceptos Básicos de Orquestación de Contenedores
Docker Swarm y Kubernetes proporcionan capacidades avanzadas de gestión de contenedores para escalado, equilibrio de carga y despliegue automatizado en múltiples hosts.
Resumen
Los contenedores Docker representan un enfoque potente para el despliegue de software, ofreciendo una portabilidad, eficiencia y escalabilidad sin igual. Al dominar las tecnologías de contenedores, los desarrolladores pueden crear entornos consistentes e aislados que agilizan los flujos de trabajo de desarrollo, prueba y producción de aplicaciones en diversas plataformas informáticas.



