Cómo Crear y Administrar Contenedores Docker de Forma Efectiva

DockerBeginner
Practicar Ahora

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.