Compartilhar via


Introdução a contêineres e Docker

Dica

Esse conteúdo é um trecho do eBook, arquitetura de microsserviços do .NET para aplicativos .NET em contêineres, disponível em do .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

miniatura da capa do eBook sobre arquitetura de microsserviços do .NET para aplicativos .NET em contêineres.

O uso de contêineres é uma abordagem de desenvolvimento de software na qual um aplicativo ou serviço, suas dependências e sua configuração (abstraídos como arquivos de manifesto de implantação) são empacotados juntos como uma imagem de contêiner. O aplicativo em contêineres pode ser testado como uma unidade e implantado como uma instância de imagem de contêiner no SO (sistema operacional) do host.

Assim como os contêineres de transporte permitem que as mercadorias sejam transportadas por navio, trem ou caminhão, independentemente da carga dentro, os contêineres de software atuam como uma unidade padrão de implantação de software que pode conter diferentes dependências e código. Contêinerizar software desta forma permite que desenvolvedores e profissionais de TI os implantem em ambientes com pouca ou nenhuma modificação.

Os contêineres também isolam aplicativos uns dos outros em um sistema operacional compartilhado. Aplicativos em contêineres são executados em cima de um host de contêiner que, por sua vez, é executado no sistema operacional (Linux ou Windows). Os contêineres, portanto, têm um volume significativamente menor do que as imagens de VM (máquina virtual).

Cada contêiner pode executar um aplicativo Web inteiro ou um serviço, conforme mostrado na Figura 2-1. Neste exemplo, o host do Docker é um host de contêiner e App1, App2, Svc 1 e Svc 2 são aplicativos ou serviços em contêineres.

Diagrama mostrando quatro contêineres em execução em uma VM ou em um servidor.

Figura 2-1. Vários contêineres em execução em um host de contêiner

Outro benefício do uso de contêineres é a escalabilidade. Você pode rapidamente escalar criando novos contêineres para tarefas de curto prazo. Do ponto de vista do aplicativo, a instanciação de uma imagem (criação de um contêiner) é semelhante à instanciação de um processo como um serviço ou um aplicativo Web. Para confiabilidade, no entanto, quando você executa várias instâncias da mesma imagem em vários servidores host, normalmente deseja que cada contêiner (instância de imagem) seja executado em um servidor host ou VM diferente em diferentes domínios de falha.

Em suma, os contêineres oferecem os benefícios de isolamento, portabilidade, agilidade, escalabilidade e controle em todo o fluxo de trabalho do ciclo de vida do aplicativo. O benefício mais importante é o isolamento do ambiente fornecido entre Desenvolvimento e Operações.