Para los desarrolladores empresariales, un desafío común puede ser garantizar que una aplicación se ejecute de manera confiable y coherente en diferentes entornos, desde una laptop local hasta servidores de etapa de pruebas y una infraestructura de producción. La creación de contenedores es una forma de virtualización del sistema operativo que resuelve directamente este problema. Es un método para empaquetar una aplicación y todas sus dependencias, como bibliotecas y archivos de configuración, en una unidad única, aislada y ejecutable llamada contenedor. Este enfoque proporciona un entorno coherente, lo que ayuda a garantizar que lo que funciona en el desarrollo también lo hará en la producción.
La creación de contenedores es un proceso de implementación de software que agrupa el código de una aplicación con todos los archivos y bibliotecas que necesita para ejecutarse.
Este paquete autónomo, o "contenedor", es ligero y portátil porque no necesita su propio sistema operativo invitado. En cambio, comparte el kernel del sistema operativo del host mientras se ejecuta en su propio espacio de usuario aislado. Este aislamiento significa que puedes ejecutar varios contenedores en un solo host, cada uno con su propio conjunto de dependencias, sin preocuparte por los conflictos entre ellos.
Un entorno alojado en contenedores tiene una arquitectura en capas, que comienza con el hardware subyacente y se mueve hasta la aplicación en sí.
El desarrollo de la creación de contenedores sigue un proceso lógico paso a paso que mueve una aplicación desde el código fuente a una instancia aislada en ejecución.
El proceso comienza con el desarrollador creando un archivo (una opción popular es un Dockerfile). Este archivo actúa como una receta o un conjunto de instrucciones para crear el entorno de la aplicación. Especifica todo lo necesario, incluidos los siguientes elementos:
|
Siguiendo las instrucciones del archivo, un desarrollador usa un comando para crear una imagen de contenedor. Esta imagen es un archivo estático, inmutable y portátil que actúa como un plano autónomo para la aplicación. Encapsula el código de la aplicación y todas sus dependencias en un único paquete en capas. Piensa en la imagen como una clase en la programación orientada a objetos; es la plantilla a partir de la cual se crearán las instancias en ejecución.
Una vez compilada, la imagen del contenedor se envía a un registro de contenedores. Un registro es un repositorio centralizado para almacenar y administrar imágenes. Para el uso empresarial, es esencial un registro privado y seguro como Artifact Registry de Google. Almacenar la imagen en un registro facilita compartirla entre equipos, controlar las versiones y acceder a ella desde cualquier servidor en tu entorno de producción.
El último paso es crear una instancia en ejecución de la imagen, que es el contenedor en sí. Se envía un comando al motor de contenedores para ejecutar una imagen específica del registro. Luego, el motor usa el kernel del sistema operativo del host para hacer lo siguiente:
|
La creación de contenedores es una tecnología fundamental para la computación en la nube moderna, ya que permite una amplia gama de patrones arquitectónicos.
Concepto | Descripción y rol de la creación de contenedores |
La creación de contenedores es el modelo de implementación ideal para una arquitectura de microservicios. Cada contenedor encapsula un servicio único e independiente, lo que permite a los equipos desarrollar, implementar y escalar sus servicios de forma autónoma. | |
Los contenedores pueden simplificar el proceso de migración de aplicaciones heredadas a la nube. Si "trasladas" una aplicación a un contenedor, puedes hacerla portátil y lista para ejecutarse en la infraestructura de cualquier proveedor de servicios en la nube. | |
La portabilidad de los contenedores ayuda a garantizar que las aplicaciones se ejecuten de manera coherente en los centros de datos locales y los entornos de nube pública, lo que proporciona un habilitador clave para una estrategia de nube híbrida sin interrupciones. | |
Este es un modelo de servicio en la nube, como Google Kubernetes Engine (GKE), que automatiza la organización y administración de contenedores. Abstrae la infraestructura subyacente, lo que permite que los desarrolladores se enfoquen en la aplicación. | |
Los contenedores ofrecen más control sobre el entorno operativo y el tiempo de ejecución del lenguaje, mientras que la tecnología sin servidores proporciona un nivel más alto de abstracción sin necesidad de administrar servidores. Ambos son patrones válidos y se pueden usar en conjunto. (Por ejemplo, los contenedores suelen usarse para ejecutar cargas de trabajo sin servidores). Por ejemplo, Cloud Run usa la creación de contenedores y la tecnología sin servidores. Te permite implementar imágenes de contenedor en un entorno sin servidores. | |
La virtualización implica crear una máquina virtual completa con su propio SO invitado, virtualizando el hardware. La creación de contenedores virtualiza el sistema operativo en sí mismo, compartiendo el kernel del SO del host, lo que hace que los contenedores sean mucho más ligeros y rápidos de iniciar. | |
La coherencia de las imágenes de contenedor permite a las empresas implementar el mismo artefacto de aplicación en varias regiones geográficas con alta fidelidad. Esto ayuda a garantizar un comportamiento uniforme de la aplicación y simplifica la administración para una base de usuarios global. |
Concepto
Descripción y rol de la creación de contenedores
La creación de contenedores es el modelo de implementación ideal para una arquitectura de microservicios. Cada contenedor encapsula un servicio único e independiente, lo que permite a los equipos desarrollar, implementar y escalar sus servicios de forma autónoma.
Los contenedores pueden simplificar el proceso de migración de aplicaciones heredadas a la nube. Si "trasladas" una aplicación a un contenedor, puedes hacerla portátil y lista para ejecutarse en la infraestructura de cualquier proveedor de servicios en la nube.
La portabilidad de los contenedores ayuda a garantizar que las aplicaciones se ejecuten de manera coherente en los centros de datos locales y los entornos de nube pública, lo que proporciona un habilitador clave para una estrategia de nube híbrida sin interrupciones.
Este es un modelo de servicio en la nube, como Google Kubernetes Engine (GKE), que automatiza la organización y administración de contenedores. Abstrae la infraestructura subyacente, lo que permite que los desarrolladores se enfoquen en la aplicación.
Los contenedores ofrecen más control sobre el entorno operativo y el tiempo de ejecución del lenguaje, mientras que la tecnología sin servidores proporciona un nivel más alto de abstracción sin necesidad de administrar servidores. Ambos son patrones válidos y se pueden usar en conjunto. (Por ejemplo, los contenedores suelen usarse para ejecutar cargas de trabajo sin servidores). Por ejemplo, Cloud Run usa la creación de contenedores y la tecnología sin servidores. Te permite implementar imágenes de contenedor en un entorno sin servidores.
La virtualización implica crear una máquina virtual completa con su propio SO invitado, virtualizando el hardware. La creación de contenedores virtualiza el sistema operativo en sí mismo, compartiendo el kernel del SO del host, lo que hace que los contenedores sean mucho más ligeros y rápidos de iniciar.
La coherencia de las imágenes de contenedor permite a las empresas implementar el mismo artefacto de aplicación en varias regiones geográficas con alta fidelidad. Esto ayuda a garantizar un comportamiento uniforme de la aplicación y simplifica la administración para una base de usuarios global.
Portabilidad y coherencia
Un beneficio principal de la creación de contenedores es su capacidad de "compilar una vez, ejecutar en cualquier lugar". Dado que un contenedor empaqueta una aplicación y sus dependencias juntas, crea un entorno predecible y coherente. Esta coherencia ayuda a eliminar el problema común de "funciona en mi máquina", lo que garantiza que una aplicación se comporte de la misma manera en el desarrollo, las pruebas y la producción, independientemente de la infraestructura subyacente.
Mayor velocidad y agilidad
Los contenedores son mucho más ligeros que las máquinas virtuales tradicionales, ya que no requieren su propio sistema operativo invitado. Esto permite iniciarlos y detenerlos en segundos en lugar de minutos, lo que acelera drásticamente los ciclos de desarrollo y permite canalizaciones de CI/CD más ágiles. Las compilaciones y las implementaciones más rápidas permiten a los equipos iterar en las aplicaciones con mayor rapidez.
Eficiencia de recursos mejorada
Debido a su baja sobrecarga, los contenedores permiten una mayor utilización de los recursos. Puedes ejecutar varios contenedores en un solo sistema operativo del host, lo que lleva a una mayor densidad que con las VMs. Este eficiente "empaquetado en contenedores" de aplicaciones en servidores significa que las empresas pueden reducir la huella del servidor y los costos de infraestructura asociados.
Aislamiento de procesos y dependencias
Cada contenedor se ejecuta en su propio espacio de usuario aislado, con su propio árbol de procesos y su propia interfaz de red. Este aislamiento significa que las bibliotecas y dependencias de una aplicación alojada en contenedores no entrarán en conflicto con las de otra que se ejecute en el mismo host. Esto simplifica la administración de dependencias y también puede mejorar la seguridad, ya que contiene el posible impacto de una aplicación vulnerada.
Administración operativa simplificada
La creación de contenedores estandariza la unidad de implementación. Los equipos de operaciones pueden administrar contenedores, en lugar de máquinas completas o pilas de aplicaciones únicas. Este enfoque uniforme simplifica las tareas de implementación, escalamiento y supervisión, y forma la base para una automatización potente a través de plataformas de organización como Kubernetes.
Escalabilidad rápida
La naturaleza ligera y de inicio rápido de los contenedores los hace ideales para aplicaciones que necesitan escalar rápidamente. Cuando una aplicación experimenta un aumento repentino en la demanda, se pueden aprovisionar nuevas instancias de contenedor casi al instante para manejar la carga. Esta escalabilidad elástica ayuda a garantizar que las aplicaciones sigan respondiendo y estando disponibles sin necesidad de una intervención manual significativa.
El ecosistema de contenedores está compuesto por varios tipos de herramientas que trabajan en conjunto.
Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.