Arquitetura Docker

Postado por DBC Company Em: Capacitação, Desenvolvimento, Tecnologia Sem comentarios

Eaí, tudo bem?! Seguindo nossa linha de artigos sobre o Docker, no artigo anterior vimos um pouco sobre alguns conceitos, hoje vamos falar um pouquinho sobre a Arquitetura e como as coisas funcionam “por debaixo dos panos”. Bora lá?!

Containers vs VM (Virtual Machine)

O Docker é uma tecnologia de virtualização de ambientes que possibilita a criação de ambientes independentes e isolados. A diferença para uma VM é que um container Docker compartilha o Kernel com o sistema operacional do host. Isso faz com que o desempenho aumente e o consumo de memória do contêiner diminua.

Na figura abaixo podemos ver a diferença entre um Container Docker e uma Máquina Virtual:

Um container não precisa de um Hypervisor nem de um Sistema Operacional completo para funcionar pois ele compartilha o Kernel a partir do SO do host.

Sendo assim, o overhead de um container é o mínimo necessário, pois cada container normalmente carrega apenas um processo, que é aquele responsável pela entrega do serviço desejado.

Dessa forma os containers são processos separados a partir dos quais podemos configurar, inicializar e construir aplicações de forma isolada do sistema host e dos demais containers. Para ser executado, um container possui um sistema de arquivos completo e isolado que contém as dependências e bibliotecas necessárias, onde estes sistemas de arquivos são conhecidos como Imagens e a partir das imagens é que os containers são criados.

Esta mudança de paradigma que o Docker proporcionou nos remete a dois conceitos importantes:

  • O container só irá consumir os recursos necessário para rodar o serviço.
  • Cada container é uma aplicação isolada, sendo possível replicá-lo para qualquer ambiente que contenha o Docker instalado.

Na imagem abaixo temos uma visão da arquitetura do Docker:

Podemos ver que o sistema do Docker é dividido basicamente em três camadas:

Client: Permite aos usuários interagir com o Docker e acessar os containers via linha de comando ou API Remota.

Host: Fornece um ambiente completo para executar aplicativos, sendo composto pelo Daemon, imagens, containers, rede e volumes. O Daemon é responsável por todas as ações relacionadas aos containers e recebe comandos por meio do Client.

Registry: São serviços que fornecem locais de onde irá armazenar e baixar as imagens. Em outras palavras, o Registry, contém os repositórios Docker que hospedam as imagens, como Docker Hub.

O Docker possui uma arquitetura de client-server (cliente – servidor), onde os containers são armazenados em um servidor chamado de Docker Host. O servidor por sua vez, é responsável por todas as ações relacionadas à containers.

O Docker host pode ser local ou remoto (ou seja, uma máquina física ou uma máquina virtual) e tem a capacidade de gerenciar os containers e pode servir para cada cliente um ou mais containers.

Concluindo

Basicamente estes são os componentes da arquitetura Docker e como eles funcionam juntos. Assim, podemos entender como as camadas são separadas e como interagem entre si. Agora que já sabemos os conceitos e como tudo funciona, no próximo artigo iremos pôr a mão na massa e subir alguns containers. Até!

Por Igor Santos, Desenvolvedor de Sistemas na DBC Company.

igor.santos@dbccompany.com.br

11 Likes