Janelas e contêineresWindows and containers

Os contêineres são uma tecnologia para empacotamento e execução de aplicativos Windows e Linux em diversos ambientes locais e na nuvem.Containers are a technology for packaging and running Windows and Linux applications across diverse environments on-premises and in the cloud. Os contêineres fornecem um ambiente leve e isolado que facilita o desenvolvimento, a implantação e o gerenciamento de aplicativos.Containers provide a lightweight, isolated environment that makes apps easier to develop, deploy, and manage. Os contêineres são iniciados e parados rapidamente, tornando-os ideais para aplicativos que precisam se adaptar rapidamente à demanda mutável.Containers start and stop quickly, making them ideal for apps that need to rapidly adapt to changing demand. A natureza leve dos contêineres também os torna uma ferramenta útil para aumentar a densidade e a utilização da sua infraestrutura.The lightweight nature of containers also make them a useful tool for increasing the density and utilization of your infrastructure.

Gráfico mostrando como os contêineres podem ser executados na nuvem ou local, oferecendo suporte a aplicativos monolíticos ou microserviços escritos em praticamente qualquer idioma.

O ecossistema de contêiner da MicrosoftThe Microsoft container ecosystem

A Microsoft oferece várias ferramentas e plataformas para ajudar você a desenvolver e implantar aplicativos em contêineres:Microsoft provides a number of tools and platforms to help you develop and deploy apps in containers:

  • Execute os contêineres baseados no Windows ou Linux no Windows 10 para desenvolvimento e teste usando o Docker desktop, que usa a funcionalidade de contêineres interna ao Windows.Run Windows-based or Linux-based containers on Windows 10 for development and testing using Docker Desktop, which makes use of containers functionality built-in to Windows. Você também pode executar contêineres nativamente no Windows Server.You can also run containers natively on Windows Server.

  • Desenvolver, testar, publicar e implantar contêineres baseados no Windows usando o rico suporte para contêineres em código do Visual Studio e do Visual Studio, que incluem suporte para Docker, Docker Repose, kubernetes, Helm e outros úteis específicas.Develop, test, publish, and deploy Windows-based containers using the powerful container support in Visual Studio and Visual Studio Code, which include support for Docker, Docker Compose, Kubernetes, Helm, and other useful technologies.

  • Publicar seus aplicativos como imagens de contêiner para o DockerHub público para que outras pessoas possam usar ou para um registro particular do Azure container para o próprio desenvolvimento e implantação da sua organização, enviando e puxando diretamente de dentro do Visual Studio e o código do Visual Studio .Publish your apps as container images to the public DockerHub for others to use, or to a private Azure Container Registry for your org's own development and deployment, pushing and pulling directly from within Visual Studio and Visual Studio Code.

  • Implantar contêineres em escala no Azure ou em outras nuvens:Deploy containers at scale on Azure or other clouds:

    • Retire o aplicativo (imagem de contêiner) de um registro de contêiner, como o registro do contêiner do Azure, implante-o e gerencie-o em escala usando um orquestrador, como o serviço do kubernetes do Azure ( em versão prévia para aplicativos baseados no Windows) ou o serviço do Azure Fabric.Pull your app (container image) from a container registry, such as the Azure Container Registry, and then deploy and manage it at scale using an orchestrator such as Azure Kubernetes Service (AKS) (in preview for Windows-based apps) or Azure Service Fabric.
    • O serviço do kubernetes do Azure implanta contêineres nas máquinas virtuais do Azure e as gerencia em escala, seja com dezenas de contêineres, centenas ou até mesmo milhares.Azure Kubernetes Service deploys containers to Azure virtual machines and manages them at scale, whether that's dozens of containers, hundreds, or even thousands. As máquinas virtuais do Azure executam uma imagem personalizada do Windows Server (se você estiver implantando um aplicativo baseado no Windows) ou uma imagem do Ubuntu Linux personalizada (se você estiver implantando um aplicativo baseado em Linux).The Azure virtual machines run either a customized Windows Server image (if you're deploying a Windows-based app), or a customized Ubuntu Linux image (if you're deploying a Linux-based app).
  • Implante contêineres locais usando o Azure Stack com o mecanismo AKs (em visualização com contêineres Linux) ou o Azure Stack com o OpenShift.Deploy containers on-premises by using Azure Stack with the AKS Engine (in preview with Linux containers) or Azure Stack with OpenShift. Você também pode configurar o kubernetes no Windows Server (consulte kubernetes no Windows) e estamos trabalhando no suporte para a execução de contêineres do Windows na plataforma de contêiners redhat OpenShift também.You can also set up Kubernetes yourself on Windows Server (see Kubernetes on Windows), and we're working on support for running Windows containers on RedHat OpenShift Container Platform as well.

Como os contêineres funcionamHow containers work

Um contêiner é um silo isolado e leve para executar um aplicativo no sistema operacional do host.A container is an isolated, lightweight silo for running an application on the host operating system. Os contêineres são criados na parte superior do kernel do sistema operacional do host (que pode ser considerado o encanamento enterrado do sistema operacional), conforme mostrado neste diagrama.Containers build on top of the host operating system's kernel (which can be thought of as the buried plumbing of the operating system), as shown in this diagram.

Diagrama arquitetônico mostrando como contêineres são executados na parte superior do kernel

Enquanto um contêiner compartilha o kernel do sistema operacional do host, o contêiner não obtém acesso unfettered a ele.While a container shares the host operating system's kernel, the container doesn't get unfettered access to it. Em vez disso, o contêiner fica isolado – e, em alguns casos, o modo de exibição do sistema está virtualizado.Instead, the container gets an isolated–and in some cases virtualized–view of the system. Por exemplo, um contêiner pode acessar uma versão virtualizada do sistema de arquivos e do registro, mas todas as alterações afetam somente o contêiner e são descartados quando ele é interrompido.For example, a container can access a virtualized version of the file system and registry, but any changes affect only the container and are discarded when it stops. Para salvar dados, o contêiner pode montar armazenamento persistente, como um disco do Azure ou um compartilhamento de arquivos (incluindo arquivos do Azure).To save data, the container can mount persistent storage such as an Azure Disk or a file share (including Azure Files).

Um contêiner cria-se na parte superior do kernel, mas o kernel não fornece todas as APIs e serviços que um aplicativo precisa executar – a maioria deles é fornecida por arquivos do sistema (bibliotecas) que são executados acima do kernel no modo de usuário.A container builds on top of the kernel, but the kernel doesn't provide all of the APIs and services an app needs to run–most of these are provided by system files (libraries) that run above the kernel in user mode. Como um contêiner é isolado do ambiente de modo de usuário do host, o contêiner precisa de sua própria cópia desses arquivos de sistema do modo de usuário, que são empacotados em algo conhecido como uma imagem base.Because a container is isolated from the host's user mode environment, the container needs its own copy of these user mode system files, which are packaged into something known as a base image. A imagem base funciona como a camada básica na qual o contêiner é criado, fornecendo-a com serviços do sistema operacional não fornecidos pelo kernel.The base image serves as the foundational layer upon which your container is built, providing it with operating system services not provided by the kernel. Mas falaremos mais sobre as imagens de contêiner mais tarde.But we'll talk more about container images later.

Contêineres versus máquinas virtuaisContainers vs. virtual machines

Em contraste a um contêiner, uma máquina virtual (VMs) executa um sistema operacional completo, incluindo seu próprio kernel, conforme mostrado neste diagrama.In contrast to a container, a virtual machine (VMs) runs a complete operating system–including its own kernel–as shown in this diagram.

Diagrama arquitetônico mostrando como VMs executam um sistema operacional completo ao lado do sistema operacional do host

Contêineres e máquinas virtuais cada um tem seus usos-na verdade, muitas implantações de contêineres usam máquinas virtuais como o sistema operacional do host, em vez de serem executadas diretamente no hardware, especialmente ao executar contêineres na nuvem.Containers and virtual machines each have their uses–in fact, many deployments of containers use virtual machines as the host operating system rather than running directly on the hardware, especially when running containers in the cloud.

Para obter mais detalhes sobre as semelhanças e diferenças dessas tecnologias complementares, consulte contêineres versus máquinas virtuais.For more details on the similarities and differences of these complementary technologies, see Containers vs. virtual machines.

Imagens de contêinerContainer images

Todos os contêineres são criados a partir de imagens de contêiner.All containers are created from container images. As imagens de contêiner são um pacote de arquivos organizados em uma pilha de camadas que residem em seu computador local ou em um registro de contêiner remoto.Container images are a bundle of files organized into a stack of layers that reside on your local machine or in a remote container registry. A imagem do contêiner consiste nos arquivos do sistema operacional do modo de usuário necessários para dar suporte ao seu aplicativo, ao seu aplicativo, a qualquer tempo de execução ou dependências do seu aplicativo e qualquer outro arquivo de configuração variado que o aplicativo precisa executar corretamente.The container image consists of the user mode operating system files needed to support your app, your app, any runtimes or dependencies of your app, and any other miscellaneous configuration file your app needs to run properly.

A Microsoft oferece várias imagens (chamadas de imagens base) que você pode usar como ponto de partida para criar sua própria imagem de contêiner:Microsoft offers several images (called base images) that you can use as a starting point to build your own container image:

  • Windows -contém o conjunto completo de APIs do Windows e serviços do sistema (menos funções de servidor).Windows - contains the full set of Windows APIs and system services (minus server roles).
  • Núcleo do Windows Server -uma imagem menor que contém um subconjunto das APIs do Windows Server, especificamente o .NET Framework completo.Windows Server Core - a smaller image that contains a subset of the Windows Server APIs–namely the full .NET framework. Ele também inclui a maioria das funções de servidor, mas de infelizmente para alguns, não para servidor de fax.It also includes most server roles, though sadly to few, not Fax Server.
  • Nano Server – a menor imagem do Windows Server, com suporte para APIs do .NET Core e algumas funções de servidor.Nano Server - the smallest Windows Server image, with support for the .NET Core APIs and some server roles.
  • Windows 10 IOT Core -uma versão do Windows usada por fabricantes de hardware para pequenos recursos de Internet de dispositivos que executam processadores de braço ou x86/x64.Windows 10 IoT Core - a version of Windows used by hardware manufacturers for small Internet of Things devices that run ARM or x86/x64 processors.

Conforme mencionado anteriormente, as imagens de contêiner são compostas de uma série de camadas.As mentioned earlier, container images are composed of a series of layers. Cada camada contém um conjunto de arquivos que, quando sobrepostos juntos, representam a imagem do contêiner.Each layer contains a set of files that, when overlaid together, represent your container image. Por causa da natureza em camadas dos contêineres, você não precisa sempre direcionar uma imagem base para construir um contêiner do Windows.Because of the layered nature of containers, you don't have to always target a base image to build a Windows container. Em vez disso, você pode direcionar outra imagem que já transporta a estrutura desejada.Instead, you could target another image that already carries the framework you want. Por exemplo, a equipe do .NET publica uma imagem do .NET Core que transporta o tempo de execução do .NET Core.For example, the .NET team publishes a .NET core image that carries the .NET core runtime. Ele evita que os usuários precisem duplicar o processo de instalação do .NET Core – em vez disso, eles podem reutilizar as camadas dessa imagem de contêiner.It saves users from needing to duplicate the process of installing .NET core–instead they can reuse the layers of this container image. A própria imagem do .NET Core foi criada com base no nano Server.The .NET core image itself is built based upon Nano Server.

Para obter mais detalhes, consulte imagens base do contêiner.For more details, see Container Base Images.

Usuários do contêinerContainer users

Contêineres para desenvolvedoresContainers for developers

Os contêineres ajudam os desenvolvedores a criar e enviar aplicativos de alta qualidade mais rapidamente.Containers help developers build and ship higher-quality apps, faster. Com contêineres, os desenvolvedores podem criar uma imagem de contêiner que é implementada em segundos, identicamente entre ambientes.With containers, developers can create a container image that deploys in seconds, identically across environments. Os contêineres atuam como um mecanismo fácil para compartilhar código entre equipes e inicializar um ambiente de desenvolvimento sem afetar o sistema de arquivos do host.Containers act as an easy mechanism to share code across teams and to bootstrap a development environment without impacting your host filesystem.

Os contêineres são portáteis e versáteis, podem executar aplicativos escritos em qualquer idioma e eles são compatíveis com qualquer computador executando o Windows 10, versão 1607 ou posterior, ou Windows 2016 ou posterior.Containers are portable and versatile, can run apps written in any language, and they're compatible with any machine running Windows 10, version 1607 or later, or Windows 2016 or later. Os desenvolvedores podem criar e testar um contêiner localmente no laptop ou na área de trabalho e, em seguida, implantar a mesma imagem de contêiner para a nuvem privada, a nuvem pública ou o provedor de serviços de sua empresa.Developers can create and test a container locally on their laptop or desktop, and then deploy that same container image to their company's private cloud, public cloud, or service provider. A agilidade natural dos contêineres oferece suporte a padrões de desenvolvimento de aplicativos modernos em ambientes de nuvem virtualizados de grande escala.The natural agility of containers supports modern app development patterns in large-scale, virtualized cloud environments.

Contêineres para profissionais de tiContainers for IT professionals

Os contêineres ajudam os administradores a criar uma infra-estrutura que seja mais fácil de atualizar e manter, e que tenha mais utilização total dos recursos de hardware.Containers help admins create infrastructure that's easier to update and maintain, and that more fully utilizes hardware resources. Os profissionais de ti podem usar contêineres para fornecer ambientes padronizados para suas equipes de desenvolvimento, QA e produção.IT professionals can use containers to provide standardized environments for their development, QA, and production teams. Usando contêineres, os administradores de sistemas abstrairam diferenças nas instalações do sistema operacional e na infraestrutura subjacente.By using containers, systems administrators abstract away differences in operating system installations and the underlying infrastructure.

Orquestração de contêineresContainer orchestration

Os orquestradores são uma parte essencial da infraestrutura ao configurar um ambiente baseado em contêiner.Orchestrators are a critical piece of infrastructure when setting up a container-based environment. Embora você possa gerenciar manualmente alguns recipientes usando o Docker e o Windows, os aplicativos muitas vezes fazem uso de cinco, 10 ou até centenas de recipientes, que é onde os orchestradores vêm.While you can manage a few containers manually using Docker and Windows, apps often make use of five, ten, or even hundreds of containers, which is where orchestrators come in.

Os orquestradores de contêiner foram criados para ajudar a gerenciar contêineres em escala e em produção.Container orchestrators were built to help manage containers at scale and in production. Os orquestradores fornecem funcionalidade para:Orchestrators provide functionality for:

  • Implantando em escalaDeploying at scale
  • Agendamento da carga de trabalhoWorkload scheduling
  • Monitoramento de integridadeHealth monitoring
  • Falhando quando um nó falhaFailing over when a node fails
  • Dimensionamento para cima ou para baixoScaling up or down
  • RedeNetworking
  • Descoberta de serviçoService discovery
  • Coordenação de atualizações de aplicativosCoordinating app upgrades
  • Afinidade de nó de clusterCluster node affinity

Há muitos orquestradores diferentes que você pode usar com contêineres do Windows; Estas são as opções fornecidas pela Microsoft:There are many different orchestrators that you can use with Windows containers; here are the options Microsoft provides:

Experimentar contêineres no WindowsTry containers on Windows

Para começar a usar recipientes no Windows Server ou no Windows 10, consulte o seguinte:To get started with containers on Windows Server or Windows 10, see the following:

Para obter ajuda para decidir quais serviços do Azure são adequados para seu cenário, consulte serviços de contêiner do Azure e escolhendo quais serviços do Azure usar para hospedar seu aplicativo.For help deciding which Azure services are right for your scenario, see Azure container services and Choosing what Azure services to use to host your application.