Arquitetura Docker e seus componentes para iniciantes

Vamos nos familiarizar com a arquitetura do Docker e seus componentes essenciais.

Suponho que você tenha um conhecimento básico do Docker. Se não, você pode consultar este artigo anterior.

Acredito que você entenda a importância do Docker no DevOps. Agora, por trás dessa ferramenta fantástica, deve haver uma arquitetura incrível e bem pensada. Não é?

Mas antes de falar sobre isso, deixe-me mostrar os sistemas de virtualização anteriores e atuais.

Virtualização tradicional versus virtualização de nova geração

Anteriormente, costumávamos criar máquinas virtuais e cada VM tinha um sistema operacional que ocupava muito espaço e o tornava pesado.

Agora, no caso do contêiner docker, você tem um único SO e os recursos são compartilhados entre os contêineres. Por isso, é leve e inicia em segundos.

Arquitetura do Docker

Abaixo está o diagrama simples de uma arquitetura Docker.

Deixe-me explicar os componentes de uma arquitetura docker.

Motor Docker

É a parte central de todo o sistema Docker. O Docker Engine é uma aplicação que segue a arquitetura cliente-servidor. Ele é instalado na máquina host. Existem três componentes no Docker Engine:

  • Servidor: É o daemon docker chamado dockerd. Ele pode criar e gerenciar imagens docker. Contêineres, redes, etc.
  • API Rest: É usada para instruir o daemon do docker sobre o que fazer.
  • Command Line Interface (CLI): É um cliente que é usado para inserir comandos do docker.
  Como excluir uma conta ATT

Cliente Docker

Os usuários do Docker podem interagir com o Docker por meio de um cliente. Quando qualquer comando docker é executado, o cliente os envia para o daemon dockerd, que os executa. A API do Docker é usada pelos comandos do Docker. O cliente Docker pode se comunicar com mais de um daemon.

Registros do Docker

É o local onde as imagens do Docker são armazenadas. Pode ser um registro do docker público ou um registro do docker privado. O Docker Hub é o local padrão das imagens do docker, o registro público de suas lojas. Você também pode criar e executar seu próprio registro privado.

Quando você executa os comandos docker pull ou docker run, a imagem do docker necessária é extraída do registro configurado. Quando você executa o comando docker push, a imagem do docker é armazenada no registro configurado.

Objetos do Docker

Ao trabalhar com o Docker, você usa imagens, contêineres, volumes, redes; todos esses são objetos do Docker.

Imagens

As imagens do Docker são modelos somente leitura com instruções para criar um contêiner do Docker. A imagem do Docker pode ser extraída de um hub do Docker e usada como está, ou você pode adicionar instruções adicionais à imagem base e criar uma imagem docker nova e modificada. Você pode criar suas próprias imagens do docker também usando um dockerfile. Crie um dockerfile com todas as instruções para criar um container e executá-lo; ele criará sua imagem personalizada do docker.

  Encontre o número de núcleos em um processador e limite o uso do núcleo pelos aplicativos

A imagem do Docker tem uma camada base que é somente leitura e a camada superior pode ser gravada. Quando você edita um dockerfile e o reconstrói, apenas a parte modificada é reconstruída na camada superior.

Recipientes

Depois de executar uma imagem do docker, ela cria um contêiner do docker. Todos os aplicativos e seu ambiente são executados dentro desse contêiner. Você pode usar a API ou CLI do Docker para iniciar, parar e excluir um contêiner docker.

Abaixo está um comando de exemplo para executar um contêiner docker do Ubuntu:

docker run -i -t ubuntu /bin/bash

Volumes

Os dados persistentes gerados pelo docker e usados ​​pelos contêineres do Docker são armazenados em Volumes. Eles são totalmente gerenciados pelo docker por meio da CLI do docker ou da API do Docker. Os volumes funcionam em contêineres Windows e Linux. Em vez de persistir os dados na camada gravável de um contêiner, é sempre uma boa opção usar volumes para isso. O conteúdo do volume existe fora do ciclo de vida de um contêiner, portanto, o uso do volume não aumenta o tamanho de um contêiner.

Você pode usar o sinalizador -v ou –mount para iniciar um contêiner com um volume. Neste comando de amostra, você está usando o volume geekvolume com o contêiner etechpt.com.

docker run -d --name etechpt.com  -v geekvolume:/app nginx:latest

Redes

A rede do Docker é uma passagem pela qual todos os contêineres isolados se comunicam. Existem principalmente cinco drivers de rede no docker:

  Como adicionar e editar metadados no Photoshop
  • Bridge: é o driver de rede padrão para um contêiner. Você usa essa rede quando seu aplicativo está sendo executado em contêineres autônomos, ou seja, vários contêineres se comunicando com o mesmo host do docker.
  • Host: este driver remove o isolamento de rede entre os contêineres do docker e o host do docker. É usado quando você não precisa de nenhum isolamento de rede entre o host e o contêiner.
  • Overlay: Esta rede permite que os serviços de enxame se comuniquem entre si. Ele é usado quando os contêineres estão sendo executados em diferentes hosts do Docker ou quando os serviços de enxame são formados por vários aplicativos.
  • Nenhum: Este driver desabilita toda a rede.
  • macvlan: Este driver atribui o endereço mac aos contêineres para torná-los parecidos com dispositivos físicos. O tráfego é roteado entre contêineres por meio de seus endereços mac. Essa rede é usada quando você deseja que os contêineres se pareçam com um dispositivo físico, por exemplo, ao migrar uma configuração de VM.
  • Conclusão

    Espero que isso lhe dê uma ideia sobre a arquitetura do Docker e seus componentes essenciais. Navegue pelo Docker para saber mais e, se estiver interessado em obter treinamento prático, confira este Curso de Docker.

    Gostou de ler o artigo? Que tal compartilhar com o mundo?