Contenedores
Contenedores
Los contenedores son paquetes livianos y autónomos que incluyen todo lo necesario para ejecutar una aplicación: código, tiempo de ejecución, herramientas del sistema, bibliotecas y configuraciones. A diferencia de las máquinas virtuales que virtualizan el hardware, los contenedores virtualizan el sistema operativo, compartiendo el kernel del host mientras aíslan los procesos de la aplicación. Esto los hace mucho más eficientes y rápidos de iniciar.

Docker es la plataforma de contenedores más conocida. Popularizó la contenedorización al hacerla accesible y fácil de usar. Docker proporciona herramientas para construir imágenes de contenedor (Dockerfile), ejecutar contenedores y gestionarlos. Mientras que "Docker" a menudo se refiere a toda la plataforma, Docker Engine es el runtime real que ejecuta los contenedores. Docker también incluye Docker Compose para definir aplicaciones multi-contenedor y Docker Swarm para orquestación básica.
containerd es un runtime de contenedores estándar en la industria que en realidad impulsa Docker (Docker lo usa internamente). Gestiona el ciclo de vida completo del contenedor: transferencia de imágenes, almacenamiento, ejecución y redes. Muchas implementaciones de Kubernetes usan containerd directamente en lugar de pasar por Docker.
CRI-O es un runtime de contenedores ligero construido específicamente para Kubernetes. Implementa la Interfaz de Runtime de Contenedores (CRI) de Kubernetes y está diseñado para ser un runtime mínimo para Kubernetes sin características adicionales.
Podman es un motor de contenedores sin demonio que es compatible con los comandos de Docker pero no requiere un servicio en segundo plano ejecutándose con privilegios de root. Es popular en entornos preocupados por la seguridad y en sistemas Red Hat/Fedora.
LXC/LXD (Linux Containers) es una tecnología de contenedores más antigua que proporciona virtualización a nivel de sistema operativo. Los contenedores LXC son más parecidos a VMs ligeras, ejecutando un sistema Linux completo, mientras que los contenedores Docker suelen ejecutar aplicaciones individuales.

Kubernetes (K8s) es la plataforma dominante de orquestación de contenedores. No ejecuta contenedores por sí misma pero gestiona los runtimes de contenedores, automatizando el despliegue, el escalado, la red y la gestión de aplicaciones en contenedores a través de clústeres de máquinas. Kubernetes introduce conceptos como pods (grupos de contenedores), servicios, despliegues y namespaces para gestionar aplicaciones complejas.
Docker Swarm es la herramienta de orquestación nativa de Docker, más simple que Kubernetes pero con menos funciones. Es más fácil de configurar pero ha sido en gran medida eclipsada por Kubernetes.
Apache Mesos con Marathon fue una plataforma temprana de orquestación de contenedores, aunque ahora es menos común. Puede orquestar tanto contenedores como otras cargas de trabajo.
Nomad de HashiCorp es una alternativa más simple a Kubernetes que puede orquestar contenedores, máquinas virtuales y aplicaciones independientes.
Amazon ECS/EKS, Azure Container Instances, Google Kubernetes Engine son servicios gestionados de contenedores específicos de la nube que manejan gran parte de la complejidad de la infraestructura.

Contenedores de Windows permiten la contenedorización de aplicaciones Windows, aunque son menos comunes que los contenedores Linux. Vienen en dos tipos: Windows Server Containers (aislamiento por proceso) y Hyper-V Containers (aislamiento más fuerte).
Contenedores serverless como AWS Fargate, Azure Container Instances y Google Cloud Run te permiten ejecutar contenedores sin gestionar la infraestructura subyacente: solo proporcionas la imagen del contenedor.
El ecosistema se ha convergido en gran medida alrededor de los estándares OCI (Open Container Initiative), lo que significa que la mayoría de las herramientas son interoperables. Docker sigue siendo el más popular para desarrollo, containerd para runtimes de producción y Kubernetes para la orquestación a escala.
Última actualización
¿Te fue útil?
