Service Fabric e contêineresService Fabric and containers

IntroduçãoIntroduction

O Azure Service Fabric é uma plataforma de sistemas distribuídos que facilita o empacotamento, implantação e gerenciamento de microsserviços e contêineres escalonáveis e confiáveis.Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers.

O Service Fabric é um orquestrador de cotêiner da Microsoft que implanta microsserviços em um cluster de computadores.Service Fabric is Microsoft's container orchestrator for deploying microservices across a cluster of machines. Benefícios do Service Fabric das lições aprendidas durante seus anos executando os serviços da Microsoft em grande escala.Service Fabric benefits from the lessons learned during its years running services at Microsoft at massive scale.

Os microsserviços podem ser desenvolvidos de várias maneiras usando os modelos de programação do Service Fabric, o ASP.NET Core, para implantar qualquer código que você escolher.Microservices can be developed in many ways from using the Service Fabric programming models, ASP.NET Core, to deploying any code of your choice. Se você quiser apenas implantar e gerenciar contêineres o Service Fabric também é uma ótima escolha.Or, if you just want to deploy and manage containers, Service Fabric is also a great choice.

Por padrão, o Service Fabric implanta e ativa esses serviços como processos.By default, Service Fabric deploys and activates these services as processes. Processos fornecem a ativação mais rápida e o uso de densidade mais alto dos recursos em um cluster.Processes provide the fastest activation and highest density usage of the resources in a cluster. O Service Fabric também pode implantar serviços em imagens de contêiner.Service Fabric can also deploy services in container images. Você também pode misturar serviços em processos e serviços em contêineres no mesmo aplicativo.You can also mix services in processes, and services in containers, in the same application.

Para ir diretamente e experimentar os contêineres no Service Fabric, experimente um início rápido, tutorial ou exemplo:To jump right in and try out containers on Service Fabric, try a quickstart, tutorial, or sample:

Início Rápido: Implantar um aplicativo de contêiner do Linux para Service FabricQuickstart: Deploy a Linux container application to Service Fabric
Início Rápido: Implantar um aplicativo de contêiner do Windows para Service FabricQuickstart: Deploy a Windows container application to Service Fabric
Colocar um aplicativo .NET existente em um contêinerContainerize an existing .NET app
Exemplos de Contêiner do Service FabricService Fabric Container Samples

O que são contêineres?What are containers

Os contêineres resolvem o problema dos aplicativos em execução com confiança em diferentes ambientes de computação, fornecendo um ambiente imutável para o aplicativo ser executado.Containers solve the problem of running applications reliably in different computing environments by providing an immutable environment for the application to run in. Os contêineres encapsulam um aplicativo e todas as suas dependências, como bibliotecas e arquivos de configuração, em sua própria isolada 'caixa' que contém todos os componentes necessários para executar o software dentro do contêiner.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. Sempre que o contêiner é executado, o aplicativo dentro dele sempre tem tudo o que precisa para executar, como as versões corretas de suas bibliotecas dependentes, quaisquer arquivos de configuração e qualquer outra coisa, precisa ser executado.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.

Os contêineres são executados sobre o kernel e têm uma exibição isolada do sistema de arquivos e outros recursos.Containers run directly on top of the kernel and have an isolated view of the file system and other resources. Um aplicativo em um contêiner não tem conhecimento de outros aplicativos ou processos fora do seu contêiner.An application in a container has no knowledge of any other applications or processes outside of its container. Cada aplicativo e seu tempo de execução, suas dependências e suas bibliotecas de sistema são executados dentro de um contêiner com acesso privado e completo à exibição isolada própria do contêiner do sistema operacional.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. Além de tornar fácil fornecer todas as dependências do seu aplicativo, precisa ser executado em diferentes ambientes de computação, segurança e isolamento de recursos são importantes benefícios do uso de contêineres com o Service Fabric – que executa outra forma de serviços em um processo.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.

Em comparação a máquinas virtuais, contêineres têm as seguintes vantagens:Compared to virtual machines, containers have the following advantages:

  • Pequeno: Os contêineres usam um único espaço de armazenamento e versões de camada e atualizações para aumentar a eficiência.Small: Containers use a single storage space and layer versions and updates to increase efficiency.
  • Rápido: Os contêineres não precisam inicializar um sistema operacional inteiro, para que possam começar muito mais rapidamente – normalmente em segundos.Fast: Containers don’t have to boot an entire operating system, so they can start much faster--typically in seconds.
  • Portabilidade: Uma imagem de aplicativo em contêiner pode ser transportada para ser executada na nuvem, local, dentro de máquinas virtuais ou diretamente em 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.
  • Governança de recursos: Um contêiner pode limitar os recursos físicos que ele pode consumir em seu host.Resource governance: A container can limit the physical resources that it can consume on its host.

Tipos de contêineres e ambientes com suporteContainer types and supported environments

O Service Fabric dá suporte a contêineres no Linux e no Windows e oferece suporte ao modo de isolamento de Windows no segundo caso.Service Fabric supports containers on both Linux and Windows, and supports Hyper-V isolation mode on Windows.

Contêineres de Docker no LinuxDocker containers on Linux

O docker oferece APIs para criar e gerenciar contêineres sobre contêineres de kernel do Linux.Docker provides APIs to create and manage containers on top of Linux kernel containers. O Hub do Docker fornece um repositório central para armazenar e recuperar imagens de contêiner.Docker Hub provides a central repository to store and retrieve container images. Para o tutorial baseado em Linux, consulte Criar seu primeiro aplicativo de contêiner do Service Fabric no Linux.For a Linux-based tutorial, see Create your first Service Fabric container application on Linux.

Contêineres do Windows ServerWindows Server containers

O Windows Server 2016 fornece dois tipos diferentes de contêineres que diferem no nível de isolamento fornecido.Windows Server 2016 provides two different types of containers that differ by level of isolation. Contêineres do Windows Server e contêineres do Docker são semelhantes porque ambos têm isolamento de sistema de arquivos e namespace, mas compartilham o kernel com o host no qual estão sendo executados.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. No Linux, esse isolamento tradicionalmente foi fornecido por cgroups e namespaces, e contêineres do Windows Server se comportam da mesma forma.On Linux, this isolation has traditionally been provided by cgroups and namespaces, and Windows Server containers behave similarly.

Contêineres do Windows com suporte a Hyper-V fornecem mais segurança e isolamento, porque nenhum contêiner compartilha o kernel do sistema operacional com outros contêineres ou com o 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. Com esse nível mais alto de isolamento de segurança, os contêineres habilitados para Hyper-V são indicados para cenários hostis e multilocatários.With this higher level of security isolation, Hyper-V enabled containers are targeted at potentially hostile, multi-tenant scenarios. Para o tutorial baseado em Windows, consulte Criar seu primeiro aplicativo de contêiner do Service Fabric no Windows.For a Windows-based tutorial, see Create your first Service Fabric container application on Windows.

A figura a seguir mostra os diferentes tipos de níveis de isolamento e virtualização disponíveis.The following figure shows the different types of virtualization and isolation levels available. Plataforma Service FabricService Fabric platform

Cenários de uso de contêineresScenarios for using containers

Estes são exemplos típicos em que um contêiner é uma boa opção:Here are typical examples where a container is a good choice:

  • Deslocamento do IIS: Você pode colocar um aplicativo MVC ASP.net existente em um contêiner em vez de migrá-lo para 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. Esses aplicativos ASP.NET MVC dependem do IIS (Serviços de Informações da Internet).These ASP.NET MVC apps depend on Internet Information Services (IIS). Você pode empacotar esses aplicativos em imagens de contêiner a partir da imagem do IIS pré-criada e implantá-los com o Service Fabric.You can package these applications into container images from the precreated IIS image and deploy them with Service Fabric. Consulte Container Images on Windows Server (Imagens de contêiner no Windows Server) para obter informações sobre contêineres do Windows.See Container Images on Windows Server for information about Windows containers.

  • Misturar contêineres e Service Fabric microservices: Use uma imagem de contêiner existente para parte de seu aplicativo.Mix containers and Service Fabric microservices: Use an existing container image for part of your application. Por exemplo, é possível usar o contêiner NGINX para o front-end da Web do seu aplicativo e serviços com estado para obter a computação mais intensiva de back-end.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.

  • Reduza o impacto dos serviços "vizinhos com ruído" : Você pode usar a capacidade de governança de recursos de contêineres para restringir os recursos que um serviço usa em um 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. Se os serviços consumirem muitos recursos e afetarem o desempenho dos outros (como uma operação demorada, parecida com uma consulta), considere colocar esses serviços em contêineres com governança 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.

Suporte ao Service Fabric para contêineresService Fabric support for containers

O Service Fabric dá suporte à implantação de contêineres do Docker em contêineres do Linux e do Windows Server no Windows Server 2016, juntamente com o suporte para o modo de isolamento do 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.

O Service Fabric fornece um modelo de aplicativo em que um contêiner representa um host de aplicativo no qual várias réplicas de serviço são colocadas.Service Fabric provides an application model in which a container represents an application host in which multiple service replicas are placed. Service Fabric também dá suporte a um cenário de executável convidado em que você não usa os modelos de programação do Service Fabric, mas em vez disso, empacotar um aplicativo existente, escrito usando qualquer linguagem ou estrutura, dentro de um contêiner.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. Esse cenário é o caso de uso comum para contêineres.This scenario is the common use-case for containers.

Você também pode executar serviços do Service Fabric dentro de um contêiner.You can also run Service Fabric services inside a container. No momento, o suporte para execução de serviços do Service Fabric dentro de contêineres é limitado.Support for running Service Fabric services inside containers is currently limited.

O Service Fabric fornece vários recursos de contêiner que ajudam a compilar de aplicativos compostos por microsserviços em contêineres, como:Service Fabric provides several container capabilities that help you build applications that are composed of containerized microservices, such as:

  • Implantação e ativação de imagem de contêiner.Container image deployment and activation.
  • Governança de recursos, incluindo a configuração de valores de recursos, por padrão, nos clusters do Azure.Resource governance including setting resource values by default on Azure clusters.
  • Autenticação do repositório.Repository authentication.
  • Porta do contêiner para o mapeamento da porta de host.Container port to host port mapping.
  • Descoberta e comunicação de contêiner para contêiner.Container-to-container discovery and communication.
  • Capacidade de configurar e definir as variáveis de ambiente.Ability to configure and set environment variables.
  • Capacidade de definir credenciais de segurança no contêiner.Ability to set security credentials on the container.
  • A opção de diferentes modos de rede para contêineres.A choice of different networking modes for containers.

Para obter uma visão abrangente do contêiner de suporte no Azure, por exemplo, como criar um cluster Kubernetes com o Serviço de Kubernetes do Azure, como para criar um registro privado do Docker no Registro de Contêiner do Azure e muito mais, consulte Azure para contêineres.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.

Próximas etapasNext steps

Neste artigo, você aprendeu sobre o suporte que o Service Fabric fornece para contêineres em execução.In this article, you learned about the support Service Fabric provides for running containers. Em seguida, apresentaremos exemplos de cada um dos recursos para mostrar como usá-los.Next, we will go over examples of each of the features to show you how to use them.

Criar seu primeiro aplicativo de contêiner do Service Fabric no LinuxCreate your first Service Fabric container application on Linux
Criar seu primeiro aplicativo de contêiner do Service Fabric no WindowsCreate your first Service Fabric container application on Windows
Saiba mais sobre contêineres do WindowsLearn more about Windows Containers