Service Fabric y contenedoresService Fabric and containers

IntroducciónIntroduction

Azure Service Fabric es una plataforma de sistemas distribuidos que facilita el empaquetado, la implementación y la administración de microservicios y contenedores escalables y confiables.Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers.

Service Fabric es el orquestador de contenedores de Microsoft que implementa microservicios en un clúster de máquinas.Service Fabric is Microsoft's container orchestrator for deploying microservices across a cluster of machines. Service Fabric se beneficia de las lecciones aprendidas durante sus años de ejecución de servicios en Microsoft a gran escala.Service Fabric benefits from the lessons learned during its years running services at Microsoft at massive scale.

Se pueden desarrollar microservicios de muchas maneras, desde usando los modelos de programación de Service Fabric o ASP.NET Core hasta implementando cualquier código que prefiera.Microservices can be developed in many ways from using the Service Fabric programming models, ASP.NET Core, to deploying any code of your choice. O, si simplemente quiere implementar y administrar contenedores, Service Fabric es también una buena opción.Or, if you just want to deploy and manage containers, Service Fabric is also a great choice.

De forma predeterminada Service Fabric permite implementar y activar estos servicios como procesos.By default, Service Fabric deploys and activates these services as processes. Los procesos proporcionan la activación más rápida y el uso de densidad más alto de los recursos del clúster.Processes provide the fastest activation and highest density usage of the resources in a cluster. Service Fabric puede implementar también servicios en imágenes de contenedor.Service Fabric can also deploy services in container images. También puede mezclar servicios en procesos y servicios en contenedores en la misma aplicación.You can also mix services in processes, and services in containers, in the same application.

Para comenzar de inmediato y probar contenedores en Service Fabric, pruebe una guía de inicio rápido, tutorial o ejemplo:To jump right in and try out containers on Service Fabric, try a quickstart, tutorial, or sample:

Inicio rápido: Implementación de una aplicación contenedora de Linux en Service FabricQuickstart: Deploy a Linux container application to Service Fabric
Inicio rápido: Implementación de una aplicación contenedora de Windows en Service FabricQuickstart: Deploy a Windows container application to Service Fabric
Inclusión de una aplicación .NET existente en un contenedorContainerize an existing .NET app
Ejemplos de contenedores de Service FabricService Fabric Container Samples

¿Qué son los contenedores?What are containers

Los contenedores vienen a solucionar el problema de ejecutar aplicaciones de forma fiable en distintos entornos de proceso proporcionando un entorno inmutable para que la aplicación se ejecute en él.Containers solve the problem of running applications reliably in different computing environments by providing an immutable environment for the application to run in. Los contenedores encapsulan una aplicación y todas sus dependencias, como bibliotecas y archivos de configuración, en su propio "cuadro" aislado que contiene todo lo necesario para ejecutar el software en el contenedor.Containers wrap an application and all of its dependencies, such as libraries and configuration files, into its own isolated 'box' that contains everything needed to run the software inside the container. Siempre que se ejecuta el contenedor, la aplicación que está dentro de él dispone de todo lo necesario para ejecutarse como, por ejemplo, las versiones adecuadas de sus bibliotecas dependientes, todos los archivos de configuración y cualquier otra cosa que necesite para ejecutarse.Wherever the container runs, the application inside it always has everything it needs to run such as the right versions of its dependent libraries, any configuration files, and anything else it needs to run.

Los contenedores se ejecutan directamente en el kernel y tienen una vista aislada del sistema de archivos y de otros recursos.Containers run directly on top of the kernel and have an isolated view of the file system and other resources. Una aplicación en un contenedor no tiene relación con ninguna otra aplicación o proceso fuera de su contenedor.An application in a container has no knowledge of any other applications or processes outside of its container. Cada aplicación y su entorno en tiempo de ejecución, las dependencias y las bibliotecas del sistema se ejecutan dentro de un contenedor con acceso completo y privado a su propia vista aislada del sistema operativo.Each application and its runtime, dependencies, and system libraries run inside a container with full, private access to the container's own isolated view of the operating system. Además de proporcionar con facilidad todas las dependencias que la aplicación necesita para ejecutarse en diferentes entornos de proceso, la seguridad y el aislamiento de los recursos son ventajas importantes del uso de contenedores con Service Fabric que, de lo contrario, ejecutaría los servicios en un proceso.In addition to making it easy to provide all of your application's dependencies it needs to run in different computing environments, security and resource isolation are important benefits of using containers with Service Fabric--which otherwise runs services in a process.

En comparación con las máquinas virtuales, los contenedores ofrecen las siguientes ventajas:Compared to virtual machines, containers have the following advantages:

  • Pequeño: usan un único espacio de almacenamiento y actualizaciones y versiones de capa para aumentar la eficacia.Small: Containers use a single storage space and layer versions and updates to increase efficiency.
  • Rápidos: no tienen que arrancar un sistema operativo entero, así que pueden iniciarse con mayor rapidez, normalmente en unos segundos.Fast: Containers don’t have to boot an entire operating system, so they can start much faster--typically in seconds.
  • Portabilidad: se puede portar una imagen de aplicación en contenedor para que se ejecute en la nube o localmente, en máquinas virtuales o directamente en máquinas físicas.Portability: A containerized application image can be ported to run in the cloud, on premises, inside virtual machines, or directly on physical machines.
  • Gobernanza de recursos: un contenedor puede limitar los recursos físicos que puede consumir en el host.Resource governance: A container can limit the physical resources that it can consume on its host.

Tipos de contenedor y entornos compatiblesContainer types and supported environments

Service Fabric admite contenedores en Linux y Windows, y admite el modo de aislamiento de Hyper-V en Windows.Service Fabric supports containers on both Linux and Windows, and supports Hyper-V isolation mode on Windows.

Contenedores de Docker en LinuxDocker containers on Linux

Docker ofrece API para crear y administrar contenedores sobre contenedores de kernel de Linux.Docker provides APIs to create and manage containers on top of Linux kernel containers. Docker Hub proporciona un repositorio central para almacenar y recuperar imágenes de contenedor.Docker Hub provides a central repository to store and retrieve container images. Para ver un tutorial basado en Linux, consulte Cree la primera aplicación de contenedor de Service Fabric en Linux.For a Linux-based tutorial, see Create your first Service Fabric container application on Linux.

Contenedores de Windows ServerWindows Server containers

Windows Server 2016 proporciona dos tipos distintos de contenedores que difieren en el nivel de aislamiento que ofrecen.Windows Server 2016 provides two different types of containers that differ by level of isolation. Los contenedores de Windows Server y los de Docker se parecen en que tienen un aislamiento del sistema de archivos y un espacio de nombres, pero comparten el kernel con el host en que se ejecutan.Windows Server containers and Docker containers are similar because both have namespace and file system isolation, while sharing the kernel with the host they are running on. En Linux, este aislamiento tradicionalmente lo han proporcionado los cgroups y los espacios de nombres, y los contenedores de Windows Server se comportan de forma parecida.On Linux, this isolation has traditionally been provided by cgroups and namespaces, and Windows Server containers behave similarly.

Los contenedores de Windows compatibles con Hyper-V proporcionan mayor seguridad y aislamiento, ya que los contenedores no comparten el kernel del sistema operativo entre ellos ni con el host.Windows containers with Hyper-V support provide more isolation and security because no container shares the operating system kernel with any other container, or with the host. Con este mayor nivel de aislamiento de seguridad, los contenedores habilitados para Hyper-V están diseñados para escenarios potencialmente hostiles y multiinquilino.With this higher level of security isolation, Hyper-V enabled containers are targeted at potentially hostile, multi-tenant scenarios. Para ver un tutorial basado en Windows, consulte Cree la primera aplicación de contenedor de Service Fabric en Windows.For a Windows-based tutorial, see Create your first Service Fabric container application on Windows.

La ilustración siguiente muestra los diferentes tipos de niveles de aislamiento y virtualización disponibles.The following figure shows the different types of virtualization and isolation levels available. Plataforma de Service FabricService Fabric platform

Escenarios de uso de contenedoresScenarios for using containers

Ejemplos típicos de buena elección de contenedor:Here are typical examples where a container is a good choice:

  • Migración mediante lift-and-shift de IIS: puede colocar una aplicación existente de ASP.NET MVC en un contenedor en lugar de migrarla a ASP.NET Core.IIS lift and shift: You can put an existing ASP.NET MVC app in a container instead of migrating it to ASP.NET Core. Estas aplicaciones de ASP.NET MVC dependen de Internet Information Services (IIS).These ASP.NET MVC apps depend on Internet Information Services (IIS). Puede empaquetarlas en imágenes de contenedor a partir de la imagen de IIS creada previamente e implementarlas con Service Fabric.You can package these applications into container images from the precreated IIS image and deploy them with Service Fabric. Consulte Imágenes de contenedores en Windows Server para obtener información sobre los contenedores de Windows.See Container Images on Windows Server for information about Windows containers.

  • Mezcla de los contenedores y los microservicios de Service Fabric: Use una imagen de contenedor existente para parte de la aplicación.Mix containers and Service Fabric microservices: Use an existing container image for part of your application. Por ejemplo, podría usar el contenedor NGINX para el front-end web de su aplicación y los servicios con estado para la computación de back-end más intensa.For example, you might use the NGINX container for the web front end of your application and stateful services for the more intensive back-end computation.

  • Reducción del impacto de los servicios de "vecinos ruidosos" : puede usar la capacidad de gobernanza de recursos de los contenedores para restringir los recursos que utiliza un servicio en un host.Reduce impact of "noisy neighbors" services: You can use the resource governance ability of containers to restrict the resources that a service uses on a host. Si hay servicios que consuman un gran número de recursos y afecten al rendimiento de otros (por ejemplo, una consulta de larga ejecución como operación), considere la posibilidad de poner estos servicios en contenedores con gobernanza de recursos.If services might consume many resources and affect the performance of others (such as a long-running, query-like operation), consider putting these services into containers that have resource governance.

Compatibilidad de los contenedores con Service FabricService Fabric support for containers

Service Fabric admite la implementación de contenedores de Docker en Linux y de contenedores de Windows Server en Windows Server 2016, además de el modo de aislamiento de Hyper-V.Service Fabric supports the deployment of Docker containers on Linux, and Windows Server containers on Windows Server 2016, along with support for Hyper-V isolation mode.

Service Fabric proporciona un modelo de aplicaciónen el que un contenedor representa un host de la aplicación en el que se colocan varias réplicas de servicio.Service Fabric provides an application model in which a container represents an application host in which multiple service replicas are placed. Service Fabric admite también un escenario de archivo ejecutable invitado en el que el usuario no usa los modelos de programación de Service Fabric integrados y, en su lugar, empaqueta una aplicación existente, escrita con cualquier lenguaje o plataforma, dentro de un contenedor.Service Fabric also supports a guest executable scenario in which you don't use the built-in Service Fabric programming models but instead package an existing application, written using any language or framework, inside a container. Este escenario es el caso habitual de los contenedores.This scenario is the common use-case for containers.

También puede ejecutar servicios de Service Fabric dentro de un contenedor.You can also run Service Fabric services inside a container. La compatibilidad con la ejecución de servicios de Service Fabric dentro de contenedores está limitada actualmente.Support for running Service Fabric services inside containers is currently limited.

Service Fabric ofrece varias funcionalidades de contenedor que le ayudarán a crear aplicaciones que se componen de microservicios en contenedores, como:Service Fabric provides several container capabilities that help you build applications that are composed of containerized microservices, such as:

  • Activación e implementación de la imagen de contenedor.Container image deployment and activation.
  • Gobernanza de recursos, incluida la configuración de valores de recursos predeterminados en clústeres de Azure.Resource governance including setting resource values by default on Azure clusters.
  • La autenticación de repositorios.Repository authentication.
  • La asignación de puerto a host de contenedor.Container port to host port mapping.
  • La detección y comunicación entre contenedores.Container-to-container discovery and communication.
  • La capacidad de configurar y establecer variables de entorno.Ability to configure and set environment variables.
  • La capacidad de configurar credenciales de seguridad en el contenedor.Ability to set security credentials on the container.
  • Selección de diferentes modos de red para contenedores.A choice of different networking modes for containers.

Para obtener una introducción completa sobre la compatibilidad de contenedores en Azure para, por ejemplo, crear un clúster de Kubernetes con Azure Kubernetes Service, crear un registro privado de Docker en Azure Container Registry, etc, consulte Azure for Containers.For a comprehensive overview of container support on Azure, such as how to create a Kubernetes cluster with Azure Kubernetes Service, how to create a private Docker registry in Azure Container Registry, and more, see Azure for Containers.

Pasos siguientesNext steps

En este artículo, ha aprendido sobre la compatibilidad que ofrece Service Fabric para la ejecución de contenedores.In this article, you learned about the support Service Fabric provides for running containers. A continuación, analizaremos algunos ejemplos de cada una de las características para mostrarle cómo utilizarlas.Next, we will go over examples of each of the features to show you how to use them.

Cree la primera aplicación de contenedor de Service Fabric en LinuxCreate your first Service Fabric container application on Linux
Cree la primera aplicación de contenedor en Service Fabric en WindowsCreate your first Service Fabric container application on Windows
Más información acerca de los contenedores de WindowsLearn more about Windows Containers