Las aplicaciones alojadas en contenedores son aplicaciones que se ejecutan en paquetes de código llamados contenedores. Los contenedores incluyen todas las dependencias que una aplicación podría necesitar para ejecutarse en cualquier sistema operativo host, como bibliotecas, objetos binarios, archivos de configuración y frameworks, en un único ejecutable liviano.
El proceso de creación de contenedores para aplicaciones hace que el desarrollo de aplicaciones sea más rápido, eficiente y seguro, ya que separa las diferentes funcionalidades de las dependencias de hardware y otras piezas de software. Los contenedores se pueden ejecutar en cualquier sistema operativo host y están aislados de otros objetos de hardware y software, lo que los convierte en herramientas versátiles para crear aplicaciones que se pueden compilar una vez y ejecutarse en cualquier lugar.
Desde la Búsqueda de Google hasta YouTube y Gmail, todo el contenido de Google se ejecuta a través de contenedores. Las plataformas de código abierto Kubernetes y Knative se desarrollaron en Google y son algunas de las herramientas más usadas para administrar contenedores y aplicaciones.
Aislamiento
Como cada aplicación alojada en contenedores existe en un entorno aislado lejos de otras apps y componentes del sistema, las fallas dentro de la aplicación no afectarán a otras aplicaciones ni al sistema local, lo que puede limitar el alcance de errores.
Portabilidad
Las aplicaciones alojadas en contenedores operan independientemente del sistema operativo y, por lo tanto, se pueden portar a casi cualquier entorno, como servidores físicos, máquinas virtuales, máquinas personales de un desarrollador o la nube.
Ligera
A diferencia de las máquinas virtuales, los contenedores no llevan una versión del sistema operativo consigo, lo que las hace mucho más livianas y eficientes que otros métodos de virtualización.
Eficiencia
Las aplicaciones de creación de contenedores pueden compartir el kernel de procesamiento de una máquina y los recursos, y las capas de aplicación dentro de un contenedor se pueden compartir entre varios contenedores. Por lo tanto, las aplicaciones alojadas en contenedores requieren menos recursos, lo que permite que se ejecuten varios contenedores en la misma máquina o entorno virtual.
Escalabilidad
Se pueden agregar instancias de contenedor adicionales rápidamente para controlar las cargas de aplicación aumentadas.
Las aplicaciones alojadas en contenedores funcionan mediante la ejecución de un paquete de software ejecutable (el contenedor) que incluye todas las dependencias de aplicaciones necesarias para que la app se ejecute sobre un sistema operativo host. La aplicación en contenedores tiene varios objetos, incluidos todos los componentes de la app (por ejemplo, frameworks, bibliotecas) que conforman la imagen de contenedor, que luego ejecuta el motor del contenedor. La imagen del contenedor es el plano o la arquitectura del sistema del contenedor. Cuando se ejecuta la aplicación, el contenido de la imagen se copia en una instancia de contenedor y se puede usar en cualquier cantidad de contenedores dentro de la aplicación. Las imágenes de contenedor se crean en un estándar de la industria llamado Open Container Initiative (OCI) que ayuda a la capacidad de compartir y la compatibilidad de los contenedores.
Los motores de contenedores son el entorno de ejecución del contenedor y son la plataforma desde la que se ejecutan las aplicaciones alojadas en contenedores. Los motores de contenedores aceptan los comandos para compilar, administrar e iniciar contenedores a través de herramientas cliente. Los motores de contenedores más populares son herramientas como Docker o CRI-O.
Las herramientas de organización se usan para administrar aplicaciones en contenedores, en especial en entornos con muchos contenedores. Herramientas de organización, como Kubernetes, implementación, administración y escalamiento de contenedores
Los contenedores y las máquinas virtuales tienen una función similar, pero los contenedores tienden a usar menos recursos y son más flexibles.
Las máquinas virtuales permiten que varias aplicaciones y sistemas operativos compartan los recursos de una sola computadora o servidor físico y se ejecuten de manera simultánea (como Windows y Linux que comparten la misma computadora). Una máquina virtual lleva sus archivos y dependencias, así como su propia copia del sistema operativo.
Los contenedores no llevan una copia del sistema operativo como las máquinas virtuales. Debido a esto, la diferencia principal entre los contenedores y las máquinas virtuales es que la creación de contenedores usa recursos de procesamiento de manera más eficiente. En su lugar, el entorno de ejecución del contenedor se instala en el sistema operativo existente del servidor o la computadora, lo que permite que todos los contenedores compartan el mismo sistema operativo.
En el nivel más básico, los contenedores se dividen en dos tipos: contenedores del sistema y contenedores de la aplicación.
Los contenedores de aplicaciones son soluciones sin estado que suelen ejecutar un solo proceso. Cuando hablamos de aplicaciones en contenedores, se ejecutan contenedores de aplicaciones en los que cada contenedor controla un proceso, con varios contenedores organizados por una herramienta como Kubernetes.
Los contenedores de aplicaciones abundan en el mercado. Docker se considera el más popular, aunque hay varios otros. La OCI administra el desarrollo de contenedores de código abierto.
Los contenedores del sistema, también conocidos como contenedores del sistema operativo, son más antiguos y funcionan de manera similar a las máquinas virtuales, aunque sin la misma sobrecarga de procesamiento. Se comporta como un sistema independiente y no incluye la imagen de contenedor ni requiere software especializado. Por lo general, los contenedores del sistema se usaban en aplicaciones heredadas monolíticas.
A continuación, se muestran algunos de los motores y herramientas más comunes de aplicaciones alojadas en contenedores:
La plataforma de código abierto más popular para la creación de contenedores. Docker permite crear y operar contenedores basados en Linux.
El proyecto de código abierto de LinuxContainers.org, LXC permite que una app ejecute varios sistemas de Linux de forma simultánea, con un solo kernel de Linux como sistema operativo.
También conocido como Rocket, rkt es un motor de contenedores basado en aplicaciones que permite un control detallado de contenedores o componentes específicos de un sistema de contenedores de Docker.
Una interfaz de entorno de ejecución del contenedor (CRI) para la plataforma de administración de contenedores de Kubernetes, que se usa con el fin de habilitar entornos de ejecución compatibles con OCI. A menudo, se usa como reemplazo de Docker cuando se usa Kubernetes.
Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.