Los contenedores son una forma de virtualización del sistema operativo. Se puede usar un solo contenedor para ejecutar cualquier cosa, desde un pequeño microservicio o proceso de software hasta una aplicación más grande.
Dentro de un contenedor se encuentran todos los ejecutables necesarios, código binario, bibliotecas y archivos de configuración.
Sin embargo, en comparación con los enfoques de virtualización de servidores o máquinas, los contenedores no contienen imágenes del sistema operativo. Esto los hace más livianos y portátiles, con una sobrecarga significativamente menor.
Aprende más sobre los contenedores devops
En implementaciones de aplicaciones más grandes, se pueden implementar varios contenedores como uno o más clústeres de contenedores. Dichos clústeres pueden ser administrados por un orquestador de contenedores como Kubernetes.
Beneficios de los contenedores
Los contenedores son una forma simplificada de crear, probar, implementar y volver a implementar aplicaciones en múltiples entornos, desde la computadora portátil local de un desarrollador hasta un centro de datos local e incluso la nube.
Entre otros beneficios de los contenedores, se incluyen:
- Menos sobrecarga: Los contenedores requieren menos recursos del sistema que los entornos tradicionales o de máquinas virtuales de hardware porque no incluyen imágenes del sistema operativo.
- Mayor portabilidad: Las aplicaciones que se ejecutan en contenedores se pueden implementar fácilmente en múltiples sistemas operativos y plataformas de hardware diferentes.
- Operación más consistente: Los equipos de DevOps saben que las aplicaciones en contenedores se ejecutarán de la misma manera, independientemente de dónde se implementen.
- Mayor eficiencia: Los contenedores permiten que las aplicaciones se implementen, parcheen o escalen más rápidamente.
- Mejor desarrollo de aplicaciones: Los contenedores respaldan los esfuerzos ágiles y de DevOps para acelerar los ciclos de desarrollo, prueba y producción.
Casos de uso de contenedores
Las formas comunes en que las organizaciones usan los contenedores se incluyen:
- Lift and shift de aplicaciones existentes en arquitecturas de nube modernas: Algunas organizaciones usan contenedores para migrar aplicaciones existentes a entornos más modernos. Si bien esta práctica brinda algunos de los beneficios básicos de la virtualización del sistema operativo, no ofrece todos los beneficios de una arquitectura de aplicación modular basada en contenedores.
- Refactorización de aplicaciones existentes para contenedores: Aunque la refactorización es mucho más intensiva que la migración mediante elevación y desplazamiento, permite aprovechar todas las ventajas de un entorno de contenedores.
- Desarrollo de nuevas aplicaciones nativas de contenedores: Al igual que la refactorización, este enfoque desbloquea todos los beneficios de los contenedores.
- Ofrece una mejor soporte para las arquitecturas de microservicios: Las aplicaciones distribuidas y los microservicios se pueden aislar, implementar y escalar más fácilmente utilizando bloques de construcción de contenedores individuales.
- Proporciona compatibilidad con DevOps para la integración e implementación continuas (CI/CD): La tecnología de contenedores admite la compilación, las pruebas y la implementación optimizadas desde las mismas imágenes de contenedor.
- Facilita la implementación de tareas y trabajos repetitivos: Los contenedores se implementan para admitir uno o más procesos similares, que a menudo se ejecutan en segundo plano, como funciones ETL o trabajos por lotes.
¿Cómo se relacionan Docker y Kubernetes con los contenedores?
Es probable que los usuarios involucrados en entornos de contenedores escuchen sobre dos herramientas y plataformas populares que se utilizan para construir y administrar contenedores. Estos son Docker y Kubernetes.
Docker es un entorno de tiempo de ejecución popular que se utiliza para crear y compilar software dentro de contenedores. Utiliza imágenes de Docker (instantáneas de copia en escritura) para implementar aplicaciones o software en contenedores en múltiples entornos, desde el desarrollo hasta la prueba y la producción.
Docker se creó sobre estándares abiertos y funciones dentro de los entornos operativos más comunes, incluidos Linux, Microsoft Windows y otras infraestructuras locales o basadas en la nube.
¿Cómo aprender Docker? Desde cero hasta los comandos más importantes
Sin embargo, las aplicaciones en contenedores pueden complicarse. Cuando están en producción, muchos pueden requerir de cientos a miles de contenedores separados en producción.
Aquí es donde los entornos de tiempo de ejecución de contenedores, como Docker, se benefician del uso de otras herramientas para orquestar o administrar todos los contenedores en funcionamiento.
Una de las herramientas más populares para este propósito es Kubernetes, un orquestador de contenedores que reconoce múltiples entornos de tiempo de ejecución de contenedores, incluido Docker.
Kubernetes organiza el funcionamiento de varios contenedores en armonía. Administra áreas como el uso de recursos de infraestructura subyacentes para aplicaciones en contenedores, como la cantidad de recursos informáticos, de red y de almacenamiento necesarios.
Las herramientas de orquestación como Kubernetes facilitan la automatización y el escalado de cargas de trabajo basadas en contenedores para entornos de producción en vivo.
Contenedores frente a máquinas virtuales (VM)
La gente a veces confunde la tecnología de contenedores con máquinas virtuales (VM) o tecnología de virtualización de servidores. Aunque existen algunas similitudes básicas, los contenedores son muy diferentes de las máquinas virtuales.
Las máquinas virtuales se ejecutan en un entorno de hipervisor en el que cada máquina virtual debe incluir su propio sistema operativo invitado, junto con sus archivos binarios, bibliotecas y aplicaciones relacionados.
Esto consume una gran cantidad de recursos del sistema y sobrecarga, especialmente cuando se ejecutan varias máquinas virtuales en el mismo servidor físico, cada una con su propio sistema operativo invitado.
Por el contrario, cada contenedor comparte el mismo sistema operativo host o kernel del sistema y es mucho más liviano en tamaño, a menudo solo megabytes. Esto a menudo significa que un contenedor puede tardar solo unos segundos en iniciarse (en comparación con los gigabytes y los minutos necesarios para una máquina virtual típica).
https://ciberninjas.com/reinvencion-virtualizacion-aws-nitro/