Implantar aplicativos .NET existentes como contêineres do WindowsDeploy existing .NET apps as Windows containers

As implantações baseadas em contêineres do Windows são aplicáveis a aplicativos otimizados para nuvem e aplicativos nativos de nuvem.Deployments that are based on Windows Containers are applicable to Cloud-Optimized applications and Cloud-Native applications.

No entanto, neste guia e especialmente nas seções a seguir, ele se concentra principalmente no uso de contêineres do Windows para aplicativos otimizados para a nuvem , nos quais você não precisa rearquitetar seu aplicativo.However, in this guide and especially in the following sections, it mostly focuses on using Windows Containers for Cloud-Optimized applications where you don’t need to rearchitect your application.

O que são contêineres?What are containers? (Linux ou Windows)(Linux or Windows)

Os contêineres são uma maneira de encapsular um aplicativo em seu próprio pacote isolado.Containers are a way to wrap up an application into its own isolated package. Em seu contêiner, o aplicativo não é afetado por aplicativos ou processos que existem fora do contêiner.In its container, the application is not affected by applications or processes that exist outside of the container. Tudo o que o aplicativo depende para ser executado com êxito como um processo está dentro do contêiner.Everything the application depends on to run successfully as a process is inside the container. Sempre que o contêiner puder ser movido, os requisitos do aplicativo serão sempre atendidos, em termos de dependências diretas, porque são agrupados com tudo o que precisa ser executado (dependências de biblioteca, tempos de execução e assim por diante).Wherever the container might move, the requirements of the application will always be met, in terms of direct dependencies, because it is bundled with everything that it needs to run (library dependencies, runtimes, and so on).

A principal característica de um contêiner é que ele torna o ambiente o mesmo em implantações diferentes porque o próprio contêiner vem com todas as dependências necessárias.The main characteristic of a container is that it makes the environment the same across different deployments because the container itself comes with all the dependencies it needs. Você pode depurar o aplicativo em seu computador e implantá-lo em outra máquina, com o mesmo ambiente garantido.You can debug the application on your machine, and then deploy it to another machine, with the same environment guaranteed.

Um contêiner é uma instância de uma imagem de contêiner.A container is an instance of a container image. Uma imagem de contêiner é uma maneira de empacotar um aplicativo ou serviço (como um instantâneo) e, em seguida, implantá-lo de forma confiável e reproduzível.A container image is a way to package an app or service (like a snapshot), and then deploy it in a reliable and reproducible way. Você poderia dizer que o Docker não é apenas uma tecnologia – ele também é uma filosofia e um processo.You could say that Docker is not only a technology-it's also a philosophy and a process.

Como os contêineres diariamente se tornam mais comuns, eles estão se tornando uma "unidade de implantação" de todo o setor.As containers daily become more common, they are becoming an industry-wide "unit of deployment."

Benefícios dos contêineres (mecanismo do Docker no Linux ou Windows)Benefits of containers (Docker Engine on Linux or Windows)

Criando aplicativos usando contêineres – que também podem ser definidos como blocos de construção leves – oferece um aumento significativo na agilidade para a criação, o envio e a execução de qualquer aplicativo, em qualquer infraestrutura.Building applications by using containers-which also might be defined as lightweight building blocks-offers a significant increase in agility for building, shipping, and running any application, across any infrastructure.

Com contêineres, você pode levar qualquer aplicativo de desenvolvimento para produção com pouca ou nenhuma alteração de código, graças à integração do Docker entre as ferramentas de desenvolvedor da Microsoft, os sistemas operacionais e a nuvem.With containers, you can take any app from development to production with little or no code change, thanks to Docker integration across Microsoft developer tools, operating systems, and cloud.

Quando você implanta em VMs simples, provavelmente já tem um método em vigor para implantar aplicativos ASP.NET em suas VMs.When you deploy to plain VMs, you probably already have a method in place for deploying ASP.NET apps to your VMs. No entanto, é provável que seu método envolva várias etapas manuais ou processos automatizados complexos usando uma ferramenta de implantação como Puppet ou uma ferramenta semelhante.It's likely, though, that your method involves multiple manual steps or complex automated processes by using a deployment tool like Puppet, or a similar tool. Talvez seja necessário executar tarefas como modificar itens de configuração, copiar o conteúdo do aplicativo entre servidores e executar programas de instalação interativa com base em configurações. msi, seguidos de testes.You might need to perform tasks like modifying configuration items, copying application content between servers, and running interactive setup programs based on .msi setups, followed by testing. Todas essas etapas na implantação adicionam tempo e risco às implantações.All those steps in the deployment add time and risk to deployments. Você receberá falhas sempre que uma dependência não estiver presente no ambiente de destino.You will get failures whenever a dependency is not present in the target environment.

Em contêineres do Windows, o processo de empacotamento de aplicativos é totalmente automatizado.In Windows Containers, the process of packaging applications is fully automated. Os contêineres do Windows baseiam-se na plataforma do Docker, que oferece atualizações automáticas e reversões para implantações de contêiner.Windows Containers is based on the Docker platform, which offers automatic updates and rollbacks for container deployments. A melhoria principal obtida com o uso do mecanismo do Docker é que você cria imagens, que são como instantâneos do seu aplicativo, com todas as suas dependências.The main improvement you get from using the Docker engine is that you create images, which are like snapshots of your application, with all its dependencies. As imagens são imagens do Docker (uma imagem de contêiner do Windows, neste caso).The images are Docker images (a Windows container image, in this case). As imagens executam aplicativos ASP.NET em contêineres, sem voltar ao código-fonte.The images run ASP.NET apps in containers, without going back to source code. O instantâneo do contêiner se torna a unidade de implantação.The container snapshot becomes the unit of deployment.

Muitas organizações estão disparando aplicativos monolíticos existentes pelos seguintes motivos:Many organizations are containerizing existing monolithic applications for the following reasons:

  • Libere a agilidade por meio da implantação aprimorada.Release agility through improved deployment. Os contêineres oferecem um contrato de implantação consistente entre desenvolvimento e operações.Containers offer a consistent deployment contract between development and operations. Ao usar contêineres, você não ouvirá os desenvolvedores a dizer, "ele funciona no meu computador, por que não em produção?"When you use containers, you won't hear developers say, "It works on my machine, why not in production?" Eles podem dizer, "ele é executado como um contêiner, portanto, ele será executado na produção".They can say, "It runs as a container, so it will run in production." O aplicativo empacotado, com todas as suas dependências, pode ser executado em qualquer ambiente baseado em contêiner com suporte.The packaged application, with all its dependencies, can be executed in any supported container-based environment. Ele será executado da maneira como se destina a ser executado em todos os destinos de implantação (dev, QA, preparo, produção).It will run the way it was intended to run in all deployment targets (dev, QA, staging, production). Os contêineres eliminam a maioria dos conflitos quando passam de um estágio para o outro, o que melhora muito a implantação e você pode enviar mais rapidamente.Containers eliminate most frictions when they move from one stage to the next, which greatly improves deployment, and you can ship faster.

  • Reduções de custo.Cost reductions. Os contêineres levam a custos reduzidos, seja pela consolidação e remoção de hardware existente ou pela execução de aplicativos em uma densidade maior por unidade de hardware.Containers lead to lower costs, either by the consolidation and removal of existing hardware, or from running applications at a higher density per unit of hardware.

  • Portabilidade.Portability. Os contêineres são modulares e portáteis.Containers are modular and portable. Os contêineres do Docker têm suporte em qualquer sistema operacional de servidor (Linux e Windows), em qualquer nuvem pública principal (Microsoft Azure, Amazon AWS, Google, IBM) e em ambientes de nuvem local e privada ou híbrida.Docker containers are supported on any server operating system (Linux and Windows), in any major public cloud (Microsoft Azure, Amazon AWS, Google, IBM), and in on-premises and private or hybrid cloud environments.

  • Controle.Control. Os contêineres oferecem um ambiente seguro e flexível que é controlado no nível de contêiner.Containers offer a flexible and secure environment that's controlled at the container level. Um contêiner pode ser protegido, isolado e até mesmo limitado definindo políticas de restrição de execução no contêiner.A container can be secured, isolated, and even limited by setting execution constraint policies on the container. Conforme detalhado na seção sobre contêineres do Windows, os contêineres do Windows Server 2016 e do Hyper-V oferecem opções adicionais de suporte empresarial.As detailed in the section about Windows Containers, Windows Server 2016 and Hyper-V containers offer additional enterprise support options.

Melhorias significativas na agilidade, portabilidade e controle, por fim, levam a reduções de custo significativas quando você usa contêineres para desenvolver e manter aplicativos.Significant improvements in agility, portability, and control ultimately lead to significant cost reductions when you use containers to develop and maintain applications.

O que é o Docker?What is Docker?

O Docker é um projeto de código-fonte aberto que automatiza a implantação de aplicativos como contêineres portáteis e autônomos que podem ser executados na nuvem ou localmente.Docker is an open-source project that automates the deployment of applications as portable, self-sufficient containers that can run in the cloud or on-premises. O Docker é também um empresa que promove e evolui essa tecnologia.Docker is also a company that promotes and evolves this technology. A empresa trabalha em colaboração com fornecedores de nuvem, Linux e Windows, incluindo a Microsoft.The company works in collaboration with cloud, Linux, and Windows vendors, including Microsoft.

Diagrama mostrando como o Docker implanta contêineres na nuvem híbrida.

Figura 4-6.Figure 4-6. O Docker implanta contêineres em todas as camadas da nuvem híbridaDocker deploys containers at all layers of the hybrid cloud

Para alguém familiarizado com máquinas virtuais, os contêineres podem parecer ser notavelmente semelhantes.To someone familiar with virtual machines, containers might appear to be remarkably similar. Um contêiner executa um sistema operacional, tem um sistema de arquivos e pode ser acessado através de uma rede, assim como um sistema de computador físico ou virtual.A container runs an operating system, has a file system, and can be accessed over a network, just like a physical or virtual computer system. No entanto, a tecnologia e os conceitos por trás dos contêineres são imensamente diferentes das máquinas virtuais.However, the technology and concepts behind containers are vastly different from virtual machines. Do ponto de vista de um desenvolvedor, um contêiner deve ser tratado mais como um único processo.From a developer point of view, a container must be treated more like a single process. Na verdade, um contêiner tem um único ponto de entrada para um processo.In fact, a container has a single entry point for one process.

Os contêineres do Docker (para simplificar, contêineres) podem ser executados nativamente no Linux e no Windows.Docker containers (for simplicity, containers) can run natively on Linux and Windows. Ao executar contêineres regulares, os contêineres do Windows podem ser executados somente em hosts do Windows (um servidor host ou uma VM) e os contêineres do Linux podem ser executados somente em hosts Linux.When running regular containers, Windows containers can run only on Windows hosts (a host server or a VM), and Linux containers can run only on Linux hosts. No entanto, em versões recentes do Windows Server e contêineres do Hyper-V, um contêiner do Linux também pode ser executado nativamente no Windows Server usando a tecnologia de isolamento do Hyper-V que atualmente está disponível somente em contêineres do Windows Server.However, in recent versions of Windows Server and Hyper-V containers, a Linux container also can run natively on Windows Server by using the Hyper-V isolation technology that currently is available only in Windows Server Containers.

Em breve, ambientes mistos que têm contêineres Linux e Windows serão possíveis e até mesmo comuns.In the near future, mixed environments that have both Linux and Windows containers will be possible and even common.

Benefícios dos contêineres do Windows para seus aplicativos .NET existentesBenefits of Windows Containers for your existing .NET applications

Os benefícios de usar contêineres do Windows são fundamentalmente os mesmos benefícios obtidos de contêineres em geral.The benefits of using Windows Containers are fundamentally the same benefits you get from containers in general. O uso de contêineres do Windows é a melhoria significativa da agilidade, da portabilidade e do controle.Using Windows Containers is about greatly improving agility, portability, and control.

Os aplicativos .NET existentes referem-se aos aplicativos que foram criados usando o .NET Framework.Existing .NET applications refer to those applications that were created using the .NET Framework. Por exemplo, eles podem ser aplicativos Web ASP.NET tradicionais-eles não usam o .NET Core, que é mais recente e é executado em várias plataformas no Linux, Windows e MacOS.For example, they might be traditional ASP.NET web applications-they don't use .NET Core, which is newer and runs cross-platform on Linux, Windows, and MacOS.

A principal dependência na .NET Framework é o Windows.The main dependency in the .NET Framework is Windows. Ele também tem dependências secundárias, como IIS e System. Web no ASP.NET tradicional.It also has secondary dependencies, like IIS, and System.Web in traditional ASP.NET.

Um aplicativo .NET Framework deve ser executado no Windows, período.A .NET Framework application must run on Windows, period. Se você quiser colocar os aplicativos .NET Framework em contêineres existentes e não desejar ou não quer investir em uma migração para o .NET Core ("se ele funcionar corretamente, não migrá-lo"), a única opção que você tem para contêineres é usar contêineres do Windows.If you want to containerize existing .NET Framework applications and you can't or don't want to invest in a migration to .NET Core ("If it works properly, don't migrate it"), the only choice you have for containers is to use Windows Containers.

Portanto, um dos principais benefícios dos contêineres do Windows é que eles oferecem uma maneira de modernizar seus aplicativos .NET Framework existentes que estão sendo executados no Windows por meio de contêinerização.So, one of the main benefits of Windows Containers is that they offer you a way to modernize your existing .NET Framework applications that are running on Windows-through containerization. Por fim, os contêineres do Windows obtêm os benefícios que você está procurando usando os contêineres – agilidade, portabilidade e melhor controle.Ultimately, Windows Containers gets you the benefits that you are looking for by using containers-agility, portability, and better control.

Escolha um sistema operacional com o qual se destina. Contêineres baseados em redeChoose an OS to target with .NET-based containers

Considerando a diversidade de sistemas operacionais com suporte pelo Docker, bem como as diferenças entre o .NET Framework e o .NET Core, você deve direcionar um sistema operacional específico e versões específicas com base na estrutura que você está usando.Given the diversity of operating systems that are supported by Docker, as well as the differences between .NET Framework and .NET Core, you should target a specific OS and specific versions based on the framework you are using.

Para o Windows, é possível usar o Windows Server Core ou o Windows Nano Server.For Windows, you can use Windows Server Core or Windows Nano Server. Essas versões do Windows fornecem características diferentes (como o IIS versus um servidor Web autohospedado, como Kestrel), que podem ser necessárias para os aplicativos .NET Framework ou .NET Core.These Windows versions provide different characteristics (like IIS versus a self-hosted web server like Kestrel) that might be needed by .NET Framework or .NET Core applications.

Para Linux, várias distribuições estão disponíveis e há compatibilidade com elas nas imagens oficiais do .NET Docker (como Debian).For Linux, multiple distros are available and supported in official .NET Docker images (like Debian).

A Figura 4-7 mostra as versões do sistema operacional que você pode direcionar, dependendo da versão do aplicativo do .NET Framework.Figure 4-7 shows OS versions that you can target, depending on the app's version of the .NET Framework.

Diagrama que mostra o sistema operacional a ser direcionado com base na versão .NET Framework.

Figura 4-7.Figure 4-7. Sistemas operacionais a serem direcionados com base na versão .NET FrameworkOperating systems to target based on .NET Framework version

Em cenários de migração para aplicativos existentes ou herdados baseados em aplicativos .NET Framework, as principais dependências estão no Windows e no IIS.In migration scenarios for existing or legacy applications that are based on .NET Framework applications, the main dependencies are on Windows and IIS. Sua única opção é usar imagens do Docker com base no Windows Server Core e no .NET Framework.Your only option is to use Docker images based on Windows Server Core and the .NET Framework.

Ao adicionar o nome da imagem ao arquivo Dockerfile, você pode selecionar o sistema operacional e a versão usando uma marca, como nos exemplos a seguir para as imagens de contêiner do Windows baseadas em .NET Framework:When you add the image name to your Dockerfile file, you can select the operating system and version by using a tag, as in the following examples for .NET Framework-based Windows container images:

TagsTag Sistema e versãoSystem and version
microsoft/dotnet-framework:4.x-windowsservercoremicrosoft/dotnet-framework:4.x-windowsservercore .NET Framework 4. x no Windows Server Core.NET Framework 4.x on Windows Server Core
microsoft/aspnet:4.x-windowsservercoremicrosoft/aspnet:4.x-windowsservercore .NET Framework 4. x com personalização ASP.NET adicional, no Windows Server Core.NET Framework 4.x with additional ASP.NET customization, on Windows Server Core

Para o .NET Core (multiplataforma para Linux e Windows), as marcas se pareceriam com o seguinte:For .NET Core (cross-platform for Linux and Windows), the tags would look like the following:

TagsTag Sistema e versãoSystem and version
microsoft/dotnet:2.0.0-runtimemicrosoft/dotnet:2.0.0-runtime Somente tempo de execução do .NET Core 2,0 no Linux.NET Core 2.0 runtime-only on Linux
microsoft/dotnet:2.0.0-runtime-nanoservermicrosoft/dotnet:2.0.0-runtime-nanoserver .NET Core 2,0 de tempo de execução somente no Windows nano Server.NET Core 2.0 runtime-only on Windows Nano Server

Imagens de vários arcosMulti-arch images

A partir de meados de 2017, você também pode usar um novo recurso no Docker chamado imagens de vários arcos .Beginning in mid-2017, you also can use a new feature in Docker called multi-arch images. As imagens do Docker do .NET Core podem usar marcas de várias arcos..NET Core Docker images can use multi-arch tags. Os arquivos Dockerfile não precisam mais definir o sistema operacional que você está direcionando.Your Dockerfile files no longer need to define the operating system that you are targeting. O recurso de vários arcos permite que uma única marca seja usada em várias configurações de computador.The multi-arch feature allows a single tag to be used across multiple machine configurations. Por exemplo, com vários arcos, você pode usar uma marca comum: Microsoft/dotnet: 2.0.0-Runtime.For instance, with multi-arch, you can use one common tag: microsoft/dotnet:2.0.0-runtime. Se você efetuar pull dessa marca de um ambiente de contêiner do Linux, obterá a imagem baseada em Debian.If you pull that tag from a Linux container environment, you get the Debian-based image. Se você efetuar pull dessa marca de um ambiente de contêiner do Windows, obterá a imagem baseada no nano Server.If you pull that tag from a Windows container environment, you get the Nano Server-based image.

Para .NET Framework imagens, como o .NET Framework tradicional dá suporte apenas ao Windows, você não pode usar o recurso de várias arcos.For .NET Framework images, because the traditional .NET Framework supports only Windows, you cannot use the multi-arch feature.

Tipos de contêiner do WindowsWindows container types

Assim como os contêineres do Linux, os contêineres do Windows Server são gerenciados usando o mecanismo do Docker.Like Linux containers, Windows Server containers are managed by using Docker Engine. Ao contrário dos contêineres do Linux, os contêineres do Windows incluem dois tipos diferentes de contêineres ou tempos de execução – contêineres do Windows Server e isolamento do Hyper-V.Unlike Linux containers, Windows containers include two different container types, or run times-Windows Server containers and Hyper-V isolation.

Contêineres do Windows Server: fornece isolamento de aplicativo por meio da tecnologia de isolamento de processo e namespace.Windows Server containers: Provides application isolation through process and namespace isolation technology. Um contêiner do Windows Server compartilha um kernel com o host do contêiner e todos os contêineres que estão em execução no host.A Windows Server container shares a kernel with the container host and all containers that are running on the host. Esses contêineres não fornecem um limite de segurança hostil e não devem ser usados para isolar código não confiável.These containers do not provide a hostile security boundary and should not be used to isolate untrusted code. Devido ao espaço do kernel compartilhado, esses contêineres exigem a mesma versão e configuração do kernel.Because of the shared kernel space, these containers require the same kernel version and configuration.

Isolamento do Hyper-V: expande o isolamento fornecido pelos contêineres do Windows Server executando cada contêiner em uma VM altamente otimizada.Hyper-V isolation: Expands on the isolation provided by Windows Server Containers by running each container on a highly optimized VM. Nessa configuração, o kernel do host do contêiner não é compartilhado com outros contêineres no mesmo host.In this configuration, the kernel of the container host is not shared with other containers on the same host. Esses contêineres são projetados para hospedagem multilocatário hostil, com as mesmas garantias de segurança de uma VM.These containers are designed for hostile multitenant hosting, with the same security assurances of a VM. Como esses contêineres não compartilham o kernel com o host ou outros contêineres no host, eles podem executar kernels com diferentes versões e configurações (com versões com suporte).Because these containers don't share the kernel with the host or other containers on the host, they can run kernels with different versions and configurations (with supported versions). Por exemplo, todos os contêineres do Windows no Windows 10 usam o isolamento do Hyper-V para utilizar a versão e a configuração do kernel do Windows Server.For example, all Windows containers on Windows 10 use Hyper-V isolation to utilize the Windows Server kernel version and configuration.

Executar um contêiner no Windows com ou sem o isolamento do Hyper-V é uma decisão em tempo de execução.Running a container on Windows with or without Hyper-V isolation is a run-time decision. Você pode optar por criar o contêiner com o isolamento do Hyper-V inicialmente e, em tempo de execução, optar por executá-lo como um contêiner do Windows Server em vez disso.You might choose to create the container with Hyper-V isolation initially, and at run time, choose to run it as a Windows Server container instead.

Recursos adicionaisAdditional resources

O ecossistema do contêiner no AzureThe container ecosystem in Azure

Nas seções anteriores, foi explicado quais são os benefícios dos contêineres do Docker, bem como detalhes sobre as imagens de contêiner específicas para aplicativos .NET.In previous sections, it’s been explained what the benefits of Docker containers are as well as details on the specific container images for .NET applications. Todas essas informações genéricas são fundamentais para desenvolver ou colocar um aplicativo em contêiner.All that generic information is fundamental in order to develop or containerize an application. No entanto, ao pensar no ambiente de implantação de produção ou até mesmo em ambientes de QA e desenvolvimento/teste, Microsoft Azure fornece uma ampla variedade de opções, um ecossistema de contêiner completo na nuvem (mostrado no diagrama abaixo).However, when thinking about the production deployment environment or even QA and Dev/Test environments, Microsoft Azure provides an open and broad variety of choices, a full container ecosystem in the cloud (shown in the diagram below). Dependendo das necessidades específicas do seu aplicativo, você deve escolher um ou outro produto do Azure.Depending on your specific application’s needs, you should choose one or another Azure product.

Diagrama do ecossistema do contêiner no Azure.

Figura 4-7.5.Figure 4-7.5. O ecossistema do contêiner no AzureThe container ecosystem in Azure

No ecossistema do contêiner no Azure, os seguintes produtos dão suporte a contêineres que são considerados infraestrutura:From the container ecosystem in Azure, the following products supporting containers that are considered infrastructure:

  • ACI (instâncias de contêiner do Azure)Azure Container Instances (ACI)
  • Máquinas virtuais do Azure (com suporte do contêiner)Azure Virtual Machines (With container's support)
  • Conjuntos de dimensionamento de máquinas virtuais do Azure (com suporte do contêiner)Azure Virtual Machine Scale Sets (With container's support)

Dentre essas três, o ACI fornece um grande benefício, que é o fato de que você não precisa manter o sistema operacional subjacente, sem necessidade de atualização/patch, etc., mas o ACI ainda está posicionado no nível de infraestrutura, conforme melhor explicado nas próximas seções deste livro.From those three, ACI provides a great benefit, which is the fact that you don't need to maintain the underlying OS, no need for you to upgrade/patch, etc. but ACI still is positioned in the infrastructure level, as better explained in the upcoming sections of this book.

Os produtos nos contêineres de suporte do Azure que estão ao mesmo tempo posicionados mais no nível de PaaS (plataforma como serviço) são:The products in Azure supporting containers that are at the same time positioned more in the PaaS (Platform as a Service) level are:

  • Serviço de Aplicativo do AzureAzure App Service
  • Serviço kubernetes do Azure (AKS e ACS)Azure Kubernetes Service (AKS and ACS)
  • Lote do AzureAzure Batch

Em seguida, o registro de contêiner do Azure é um registro de contêiner altamente escalonável hospedado no Azure que você pode usar de todos os produtos anteriores ao registrar e implantar suas imagens de contêiner personalizadas.Then, Azure Container Registry is a high scalable container registry hosted in Azure that you can use from all the previous products when registering and deploying your custom container images.

Além disso, de seus contêineres, você pode consumir outros serviços gerenciados no Azure, como o banco de dados SQL do Azure, o cache Redis do Azure, o Azure Cosmos DB, etc.In addition, from your containers, you can consume other managed services in Azure like Azure SQL Database, Azure Redis cache, Azure Cosmos DB, etc. Além disso, há soluções/plataformas de terceiros disponíveis no Azure Marketplace, como Cloud Foundry e OpenShift, em que você também pode usar contêineres no Azure.plus there are third-party solutions/platforms available in Azure Marketplace like Cloud Foundry and OpenShift where you can also use containers within Azure.

Nas próximas seções, você pode explorar as recomendações da Microsoft sobre quando usar cada um desses produtos e soluções do Azure especificamente ao direcionar contêineres do Windows.In the next sections, you can explore Microsoft's recommendations on when to use each of those Azure products and solutions specifically when targeting Windows Containers.