Contenedores
Contenedores
Los contenedores son paquetes ligeros e independientes 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, que virtualizan el hardware, los contenedores virtualizan el sistema operativo, compartiendo el kernel del SO anfitrión 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 contenerización al hacerla accesible y fácil de usar. Docker proporciona herramientas para crear imágenes de contenedores (Dockerfile), ejecutar contenedores y gestionarlos. Aunque "Docker" a menudo se refiere a toda la plataforma, Docker Engine es el entorno de ejecución real que ejecuta los contenedores. Docker también incluye Docker Compose para definir aplicaciones multicontenedor y Docker Swarm para una orquestación básica.
containerd es un entorno de ejecución central de contenedores, estándar de la industria, que realmente impulsa Docker (Docker lo usa internamente). Gestiona todo el ciclo de vida 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 entorno de ejecución de contenedores ligero creado específicamente para Kubernetes. Implementa la Interfaz de Entorno de Ejecución de Contenedores de Kubernetes (CRI) y está diseñado para ser un entorno mínimo para Kubernetes sin funciones adicionales.
Podman es un motor de contenedores sin daemon que es compatible con los comandos de Docker, pero no requiere que se ejecute un servicio en segundo plano 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 se parecen más a máquinas virtuales ligeras, ejecutando un sistema Linux completo, mientras que los contenedores Docker normalmente ejecutan aplicaciones individuales.

Kubernetes (K8s) es la plataforma dominante de orquestación de contenedores. No ejecuta contenedores por sí misma, sino que gestiona entornos de ejecución de contenedores, automatizando el despliegue, el escalado, las redes y la administración de aplicaciones contenerizadas en clústeres de máquinas. Kubernetes introduce conceptos como pods (grupos de contenedores), servicios, despliegues y espacios de nombres para gestionar aplicaciones complejas.
Docker Swarm es la herramienta nativa de orquestación de Docker, más simple que Kubernetes pero con menos funciones. Es más fácil de configurar, pero en gran medida ha quedado eclipsada por Kubernetes.
Apache Mesos con Marathon fue una de las primeras plataformas 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 se encargan de gran parte de la complejidad de la infraestructura.

Contenedores de Windows permiten la contenerización de aplicaciones de Windows, aunque son menos comunes que los contenedores de Linux. Vienen en dos tipos: Windows Server Containers (aislamiento de procesos) y Hyper-V Containers (aislamiento más fuerte).
Contenedores sin servidor 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 consolidado en gran medida en torno a 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 entornos de ejecución en producción y Kubernetes para la orquestación a gran escala.
Última actualización
¿Te fue útil?
