Partilhar via


Introdução a contêineres e Docker

Sugestão

Este conteúdo é um trecho do eBook, .NET Microservices Architecture for Containerized .NET Applications, disponível no do .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Miniatura da capa do eBook Arquitetura de Microsserviços .NET para Aplicações .NET Contentorizadas.

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

Assim como os contêineres permitem que as mercadorias sejam transportadas por navio, trem ou caminhão, independentemente da carga interna, os contêineres de software atuam como uma unidade padrão de implantação de software que pode conter diferentes códigos e dependências. A conteinerização de software dessa 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. Os 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). Portanto, os contêineres têm uma pegada significativamente menor do que as imagens de máquina virtual (VM).

Cada contêiner pode executar um aplicativo Web inteiro ou um serviço, como mostra a 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 um servidor.

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

Outro benefício da conteinerização é a escalabilidade. Você pode expandir rapidamente criando novos contêineres para tarefas de curto prazo. Do ponto de vista do aplicativo, instanciar uma imagem (criar um contêiner) é semelhante a instanciar 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 domínios de falha diferentes.

Em resumo, 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 Dev e Ops.