Arquitetura Docker: Por que é importante?



Este blog discute a arquitetura do docker e seus vários componentes. Ele destaca os recursos do docker que nos mostram o motivo de sua popularidade.

Muitos de nós acreditamos que o Docker é parte integrante do . Portanto, por trás dessa ferramenta incrível, deve haver uma arquitetura incrível. Neste blog, estarei cobrindo tudo o que você deve saber sobre a arquitetura do Docker. Estes são os pontos que discutirei aqui:

  1. Virtualização tradicional vs Docker
  2. Fluxo de trabalho do Docker
  3. Arquitetura Docker

Virtualização tradicional Vs Docker

O que é uma VM (máquina virtual)?

Uma VM é um servidor virtual que emula um servidor de hardware. Uma máquina virtual depende do hardware físico do sistema para emular exatamente o mesmo ambiente em que você instala seus aplicativos. Dependendo do seu caso de uso, você pode usar uma máquina virtual do sistema (que executa um sistema operacional inteiro como um processo, permitindo que você substitua uma máquina real por uma máquina virtual) ou processe máquinas virtuais que permitem executar aplicativos de computador sozinho no virtual meio Ambiente.





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

O que é Docker?

Docker é um projeto de código aberto que oferece uma solução de desenvolvimento de software conhecida como contêineres. Para entender o Docker, você precisa saber o que são contêineres. De acordo com Docker , um contêiner é um pacote leve, autônomo e executável de um software que inclui tudo o que é necessário para executá-lo.



Os contêineres são independentes de plataforma e, portanto, o Docker pode ser executado em plataformas Windows e Linux. Na verdade, o Docker também pode ser executado dentro de uma máquina virtual se houver necessidade de fazê-lo. O principal objetivo do Docker é permitir que você execute aplicativos de microsserviço em uma arquitetura distribuída.

Quando comparada às máquinas virtuais, a plataforma Docker move a abstração de recursos do nível de hardware para o nível do sistema operacional. Isso permite a realização dos vários benefícios dos recipientes, por exemplo portabilidade de aplicativos, separação de infraestrutura e microsserviços independentes.

Em outras palavras, enquanto as máquinas virtuais abstraem todo o servidor de hardware, os contêineres abstraem o kernel do sistema operacional. Esta é uma abordagem totalmente diferente para virtualização e resulta em instâncias muito mais rápidas e leves.



vm vs docker - arquitetura docker - edureka

Fluxo de trabalho do Docker

Primeiro, vamos dar uma olhada no Docker Engine e seus componentes para termos uma ideia básica de como o sistema funciona. O Docker Engine permite desenvolver, montar, enviar e executar aplicativos usando os seguintes componentes:

  1. Docker Daemon : Um processo persistente em segundo plano que gerencia imagens, contêineres, redes e volumes de armazenamento do Docker. O daemon do Docker escuta constantemente as solicitações da API Docker e as processa.

  2. API Docker Engine REST : Uma API é usada por aplicativos para interagir com o daemon Docker. Ele pode ser acessado por um cliente HTTP.

  3. Docker CLI : Um cliente de interface de linha de comando para interagir com o daemon Docker. Isso simplifica significativamente o modo como você gerencia instâncias de contêiner e é um dos principais motivos pelos quais os desenvolvedores adoram usar o Docker.

No início, o cliente Docker conversa com o daemon Docker, que realiza o trabalho pesado da construção, executando, bem como distribuindo nossos contêineres Docker. Fundamentalmente, tanto o cliente Docker quanto o daemon podem ser executados no mesmo sistema. Também podemos conectar um cliente Docker a umdaemon remoto do Docker. Além disso, usando uma API REST, o cliente Docker e o daemon se comunicam por soquetes UNIX ou uma interface de rede.

Arquitetura Docker

A arquitetura do Docker usa um modelo cliente-servidor e consiste nos componentes Docker's Client, Docker Host, Network e Storage, e Docker Registry / Hub. Vejamos cada um deles em detalhes.

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 dockerd daemon, que os executa. A API Docker é usada por comandos Docker. É possível que o cliente Docker se comunique com mais de um daemon.

Docker Host

O host Docker fornece um ambiente completo para executar e executar aplicativos. É composto pelo daemon Docker, imagens, contêineres, redes e armazenamento. Conforme mencionado anteriormente, o daemon é responsável por todas as ações relacionadas ao contêiner e recebe comandos por meio da CLI oua API REST. Ele também pode se comunicar com outros daemons para gerenciar seus serviços.

Objetos Docker

1. Imagens

As imagens nada mais são do que um modelo binário somente leitura que pode criar contêineres. Eles também contêm metadados que descrevem os recursos e necessidades do contêiner. As imagens são usadas para armazenar e enviar aplicativos. Uma imagem pode ser usada por conta própria para construir um contêiner ou personalizada para adicionar elementos adicionais para estender a configuração atual.

Você pode compartilhar as imagens do contêiner entre as equipes de uma empresa com a ajuda de um registro de contêiner privado ou compartilhá-lo com o mundo usando um registro público como o Docker Hub. As imagens são o elemento central da experiência Docker, pois permitem a colaboração entre os desenvolvedores de uma forma que não era possível antes

2. Recipientes

Contêineres são ambientes encapsulados nos quais você executa aplicativos. O contêiner é definido pela imagem e quaisquer opções de configuração adicionais fornecidas ao iniciar o contêiner, incluindo e não se limitando às conexões de rede e opções de armazenamento. Os contêineres têm acesso apenas aos recursos definidos na imagem, a menos que acesso adicional seja definido ao construir a imagem em um contêiner.

Você também pode criar uma nova imagem com base no estado atual de um contêiner. Como os contêineres são muito menores do que as VMs, eles podem ser girados em questão de segundos e resultam em uma densidade de servidor muito melhor

3. Redes

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

    1. Ponte : É 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 docker.

    2. Hospedeiro : Este driver remove o isolamento de rede entre os contêineres do docker e o host do docker. Você pode usá-lo quando não precisar de nenhum isolamento de rede entre o host e o contêiner.

    3. Sobreposição : Esta rede permite que os serviços de swarm se comuniquem entre si. Você o usa quando deseja que os contêineres sejam executados em hosts Docker diferentes ou quando deseja formar serviços de enxame por vários aplicativos.

    4. Nenhum : Este driver desabilita toda a rede.

    5. Macvlan : Este driver atribui o endereço mac aos contêineres para torná-los semelhantes a dispositivos físicos. Ele roteia o tráfego entre contêineres por meio de seus endereços mac. Você usa essa rede quando deseja que os contêineres se pareçam com um dispositivo físico, por exemplo, ao migrar uma configuração de VM.

4. Armazenamento

Você pode armazenar dados dentro da camada gravável de um contêiner, mas isso requer um driver de armazenamento. Por ser não persistente, ele perece sempre que o contêiner não está em execução. Além disso, não é fácil transferir esses dados. Com relação ao armazenamento persistente, o Docker oferece quatro opções:

    1. Volumes de dados : Eles fornecem a capacidade de criar armazenamento persistente, com a capacidade de renomear volumes, listar volumes e também listar o contêiner que está associado ao volume. Os volumes de dados são colocados no sistema de arquivos do host, fora dos contêineres de cópia no mecanismo de gravação e são bastante eficientes.

    2. Recipiente de Volume : É uma abordagem alternativa em que um contêiner dedicado hospeda um volume e para montar esse volume em outros contêineres. Nesse caso, o contêiner de volume é independente do contêiner do aplicativo e, portanto, você pode compartilhá-lo em mais de um contêiner.

      c ++ classificar os números em ordem crescente
    3. Montagens de diretório : Outra opção é montar o diretório local de um host em um contêiner. Nos casos mencionados anteriormente, os volumes teriam que estar dentro da pasta de volumes do Docker, enquanto quando se trata de montagens de diretório, qualquer diretório na máquina Host pode ser usado como uma fonte para o volume.

    4. Plugins de armazenamento : Plug-ins de armazenamento fornecem a capacidade de se conectar a plataformas de armazenamento externas. Esses plug-ins mapeiam o armazenamento do host para uma fonte externa, como uma matriz de armazenamento ou um dispositivo. Você pode ver uma lista de plug-ins de armazenamento na página Plug-in do Docker.

Docker’s Registry

Os registros Docker são serviços que fornecem locais de onde você pode armazenar e baixar imagens. Em outras palavras, um registro Docker contém repositórios Docker que hospedam uma ou mais imagens Docker. Os registros públicos incluem dois componentes: Docker Hub e Docker Cloud. Você também pode usar registros privados. Os comandos mais comuns ao trabalhar com registros incluem: docker push, docker pull, docker run

Agora que você entendeu a arquitetura Docker, verifique este pela Edureka, uma empresa de aprendizagem online confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados por todo o mundo. O curso Edureka DevOps Certification Training ajuda os alunos a entender o que é DevOps e ganhar experiência em vários processos e ferramentas DevOps, como Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack e GIT para automatizar várias etapas no SDLC.

Tem alguma questão para nós? Mencione isso na seção de comentários desta 'Arquitetura Docker' e entraremos em contato com você