Volver al curso: Azure Professional Training 2024: Fundamentos
A pesar de que las máquinas virtuales son una excelente manera de reducir los costos frente a las inversiones que son necesarias para el hardware físico, están limitadas a un solo sistema operativo por máquina virtual. Los contenedores son una excelente opción si quiere ejecutar varias instancias de una aplicación en un solo equipo host.
Fundamentos de Contenedores
Los contenedores son entornos que proporcionan a nuestras aplicaciones los archivos, variables y las bibliotecas que necesitan para ejecutarse, maximizando de esta manera su portabilidad. Una aplicación contenerizada (es decir una es una aplicación portable que puede llevarse a virtualmente «cualquier lugar» sin problemas.

Los contenedores son una forma de virtualización del sistema operativo. A diferencia de las máquinas virtuales, que en términos generales es una forma de virtualizar el hardware de un equipo, un contenedor es la capacidad del sistema operativo de virtualizarse. Dentro de un contenedor puede ejecutarse cualquier cosa: desde un microservicio o un proceso de software de gran tamaño.
Contenedores vs Máquinas Virtuales
A diferencia de las máquinas virtuales, no se administra el sistema operativo de un contenedor:
- Las máquinas virtuales son similares a una instancia de sistema operativo que se puede conectar y administrar.
- Los contenedores son ligeros y se han diseñado para crearse, escalarse horizontalmente y detenerse de forma dinámica.
- Es posible crear e implementar máquinas virtuales a medida que aumenta la demanda de aplicaciones, pero los contenedores son un método más ligero y ágil.

Entorno Portable
Los contenedores también aíslan las aplicaciones entre sí en un sistema operativo compartido. Las aplicaciones en contenedor se ejecutan sobre un host de contenedor que a su vez se ejecuta en el sistema operativo (Linux o Windows). Por lo tanto, los contenedores tienen una superficie significativamente menor que las imágenes de máquina virtual (VM).

Un contenedor brinda un entorno portable a nuestras aplicaciones:
- Todos los ejecutables que hacen posible que nuestra aplicación funcione.
- El código binario, las bibliotecas y los archivos de configuraciones necesarios para que nuestra aplicación funcione.
- Cualquier otra dependencia que se necesite para que nuestra aplicación funcione.
- Lo que NO tendremos en este entorno portable que llamamos Contenedores es la imagen del sistema operativo, y los archivos necesarios para que el sistema operativo funcione.
¿Qué es Docker?
Uno de los motores de contenedor más populares es Docker, que es compatible con Azure. Docker es un proyecto de código abierto para automatizar la implementación de aplicaciones como contenedores portátiles y autosuficientes que se pueden ejecutar en la nube o localmente. Docker es también una empresa que promueve e impulsa esta tecnología, en colaboración con proveedores de la nube, Linux y Windows, incluido Microsoft.

Los contenedores de Docker se pueden ejecutar en cualquier lugar, a nivel local en el centro de datos de cliente, en un proveedor de servicios externo o en la nube, en Azure. Los contenedores de imagen de Docker se pueden ejecutar de forma nativa en Linux y Windows. Sin embargo, las imágenes de Windows solo pueden ejecutarse en hosts de Windows y las imágenes de Linux pueden ejecutarse en hosts de Linux y hosts de Windows (con una máquina virtual Linux de Hyper-V, hasta el momento), donde host significa un servidor o una máquina virtual.
Los desarrolladores pueden usar entornos de desarrollo en Windows, Linux o macOS. En el equipo de desarrollo, el desarrollador ejecuta un host de Docker en que se implementan imágenes de Docker, incluidas la aplicación y sus dependencias:
- Los desarrolladores que trabajan en Linux o macOS usan un host de Docker basado en Linux y pueden crear imágenes solo para contenedores de Linux.
- Los desarrolladores que trabajan en Windows pueden crear imágenes para contenedores de Windows o Linux.
Imagenes de contenedor
Las “imágenes de contenedor” son los paquetes que incluyen código y dependencias para ejecutar nuestras aplicaciones. Es en sí mismo el software que se empaqueta en una imagen no está limitada a las aplicaciones que crean nuestros desarrolladores. No se debe confundir una imagen de contenedor con un contenedor, que es dicha imagen ya ejecutándose en un servidor.
Terminología Docker
Te recomendamos revisar el siguiente artículo para conocer un poco más sobre terminología Docker. Como parte de esta lección, te asignaremos una tarea en la que deberás EXPLICITAMENTE indicar que has leído la publicación sugerida :-).
Azure Container Services
Los contenedores de Azure son un entorno virtualizado ligero que no requiere administración del sistema operativo y, en algunos casos, puede responder a los cambios bajo demanda. En Azure existen las siguientes opciones.
Azure Container Instances

Azure Container Instances una oferta de PaaS que ejecuta un contenedor en Azure sin la necesidad de administrar una máquina virtual o servicios adicionales.
Permite ejecutar contenedores de Docker a petición en un entorno de Azure administrado y sin servidor. Azure Container Instances es una solución para cualquier escenario que puede funcionar en contenedores aislados, sin orquestación.
Azure Container Apps

Azure Container Apps permite ejecutar microservicios y aplicaciones contenedorizadas en una plataforma sin servidor. Comparativamente con el servicio Azure Container Instances, las aplicaciones creadas en Azure Container Apps se pueden escalar dinámicamente en función de las siguientes características:
- Tráfico HTTP
- Procesamiento controlado por eventos
- Carga de CPU o de memoria
- Cualquier escalador compatible con KEDA
Con Container Apps, podrás disfrutar de las ventajas de ejecutar contenedores y, al mismo tiempo, olvidarse de administrar la infraestructura en la nube y orquestadores de contenedores complejos.
Azure App Service

Azure App Service te permite crear y hospedar aplicaciones web, back-ends móviles y API RESTful en el lenguaje de programación que prefiera sin tener que administrar la infraestructura. Ofrece escalado automático y alta disponibilidad, es compatible con Windows y Linux y permite implementaciones automatizadas desde GitHub, Azure DevOps o cualquier repositorio Git.
Además, Azure App Service permite implementar Docker a tu aplicación para hospedar un contenedor de Windows o Linux personalizado en App Service. Además de contenedores simples, Azure App Service permite ejecutar las aplicaciones de varios contenedores con Docker Compose
Azure Kubernetes Service

Azure Kubernetes Service es un servicio de organización completo para contenedores con arquitecturas distribuidas y grandes volúmenes de contenedores. AKS (así se lo conoce por sus siglas) permite implementar rápidamente un clúster de Kubernetes listo para producción en Azure.
Azure Kubernetes Service (AKS) simplifica la implementación de un clúster de Kubernetes administrado en Azure, ya que descarga la sobrecarga operativa en Azure. Al ser un servicio de Kubernetes hospedado, Azure controla tareas críticas como la supervisión del estado y el mantenimiento. Cuando creas un clúster AKS, se crea y configura automáticamente un plano de control (control plane). Este plano de control se proporciona sin coste alguno como recurso administrado de Azure que se extrae del usuario. Solo pagas y administra los nodos asociados al clúster de AKS.
Conclusiones
- Contenedores es una forma moderna de alojamiento de aplicaciones, que brinda un entorno inmutable para nuestras aplicaciones incluyendo sus archivos, variables y las bibliotecas que necesitan para ejecutarse.
- Contenedores maximiza la portabilidad de las apps.
- Azure tiene diversos servicios para alojar aplicaciones contenerizadas, como: Azure Container Instances (ACI), Azure Container Apps, Azure App Service y Azure Kubernetes Service (AKS).
- Estos servicios son parte de la oferta PaaS de Azure.
Próximos pasos
Vamos a explorar Azure Functions.
Buenas! no me quedo bien clara la diferencia entre azure container instance y una azure app services que esta levantando un contenedor de docker. no estarian logrando el mismo resultado?
justo venía por esta misma pregunta, gracias por aclarar.
Hola
dariopizzi ! El resultado visible sería el mismo, pero los servicios tienen diferencias fundamentales:
– Azure App Service incluye servicios de valor agregado como proxy reverso, escalabilidad automática (horizontal), gestión de certificados digitales, custom domains, etc (muchas otras funcionalidades más).
– Azure Container Instances expone puertos directamente hacia internet en formato de bingings, y carece de todos los servicios de valor agregado de Azure App Service.
Saludos!
Me sumo al hilo. En una de las secciones anteriores le respondiste a una persona que el App Service plan no se podía detener para reducir costos y que la única forma era eliminarlo. Mi pregunta es, Azure Container Instances se puede detener para reducir costos o funciona de manera similar que los app services?
Hola
gnico0 ! Un Container Instance se puede detener, y estando detenido no se realizan cobros. Saludos!