Visão geral da arquitetura do Docker e componentes do Docker [para iniciantes]
Publicados: 2020-12-31Se você se deparou recentemente com o mundo dos contêineres, provavelmente não é uma má ideia entender os elementos subjacentes que trabalham juntos para oferecer benefícios de conteinerização. Mas antes disso, há uma pergunta que você pode fazer. Que problema os containers resolvem?
Depois de construir um aplicativo em um ciclo de vida de desenvolvimento típico, o desenvolvedor o envia ao testador para fins de teste. No entanto, como os ambientes de desenvolvimento e teste são diferentes, o código não funciona.
Agora, predominantemente, existem duas soluções para isso – você usa uma máquina virtual ou um ambiente em contêiner, como o Docker. Nos bons velhos tempos, as organizações costumavam implantar VMs para executar vários aplicativos.
Então, por que eles começaram a adotar a conteinerização sobre VMs? Neste artigo, forneceremos explicações detalhadas de todas essas perguntas.
Por trás dessa ferramenta fantástica, deve haver uma arquitetura igualmente bem pensada. Antes de conhecer os componentes da arquitetura do Docker, vamos entender os contêineres do Docker e como eles são superiores às VMs.
Índice
Contêineres Docker
O Docker é um projeto de código aberto que oferece a capacidade de criar, empacotar e executar aplicativos em ambientes frouxamente isolados e contidos chamados contêineres.

Com todo o isolamento e segurança proporcionados pela plataforma Docker, ela permite rodar vários containers simultaneamente em um determinado host.
Razões pelas quais os contêineres do Docker são amplamente adotados
- Ele permite que os desenvolvedores escrevam código localmente e compartilhem o trabalho com sua equipe usando Containers.
- Eles podem enviar seus aplicativos para os ambientes de teste, que são os contêineres e executar testes automatizados.
- Quando os bugs são encontrados, eles podem ser corrigidos no ambiente de desenvolvimento e, em seguida, reimplantados.
- Obter uma correção é tão simples quanto enviar uma imagem atualizada para o ambiente de produção.
Antes de nos aprofundarmos no assunto, devemos diferenciar as práticas tradicionais de virtualização da conteinerização de nova geração.
Máquinas Virtuais x Contêineres Docker
Antes de usarmos a conteinerização para nossas práticas de DevOps, as Máquinas Virtuais estavam no topo. Costumávamos criar VMs para cada aplicativo.
Embora as VMs atendessem a quase todas as necessidades, o lado negativo de usar VMs era complicado e alocava todos os recursos de memória e hardware necessários das máquinas host subjacentes.
No entanto, isso foi facilmente evitado com a conteinerização porque os contêineres fornecem virtualização no nível do sistema operacional e geralmente exigem menos memória. Assim, tornou-se popular e acabou sendo adotado pela comunidade DevOps.
Fonte da imagem
O diagrama acima descreve como as arquiteturas de VMs e Containers diferem e por que os Containers agora superaram as VMs para processos de desenvolvimento diários. Ao contrário das VMs, os Containers ficam no topo dos Container Engines para fornecer virtualização no nível do sistema operacional, economizando muitos recursos.
Motor Docker
Antes de discutir os diferentes componentes de arquitetura do Docker, é essencial entender o fluxo de trabalho do Docker. Vamos dar uma olhada no Docker Engine e suas diversas partes, que nos darão uma ideia de como funciona o sistema Docker. O Docker Engine é basicamente um aplicativo cliente-servidor típico com três componentes principais.
Servidor (Daemon)
O daemon do Docker é um processo contínuo executado em segundo plano e gerencia todos os objetos do Docker. Ele ouve as solicitações de API do Docker apresentadas pelo cliente e as processa continuamente.
API de descanso
É a interface que os clientes Docker usam para interagir com o daemon do Docker. Os clientes podem falar com o daemon através da API e podem fornecer instruções para ele.
Cliente
O Docker Client é uma interface de linha de comando (CLI) que pode interagir com o daemon. Simplifica todo o processo de gerenciamento de contêineres.
Fonte da imagem
O Docker Client (que pode ser um cliente HTTP, como uma CLI) conversa com o daemon, que executa a tarefa pesada de criar, executar e compartilhar contêineres. O Cliente e o daemon podem ser executados na mesma máquina ou conectar um cliente a um daemon remoto. O cliente e o daemon se comunicam usando uma API Rest sobre soquetes ou interface de rede. O Docker Client ajuda os usuários a gerenciar objetos do Docker, como contêineres, imagens, volumes etc. Saiba mais sobre projetos do Docker

Inscreva-se em cursos de desenvolvimento de software das melhores universidades do mundo. Ganhe Programas PG Executivos, Programas de Certificado Avançado ou Programas de Mestrado para acelerar sua carreira.
Componentes arquitetônicos
Conforme discutido anteriormente, o Docker usa uma arquitetura cliente-servidor, na qual o cliente conversa com o daemon por meio de uma API Rest. A arquitetura do Docker consiste em vários componentes, conforme discutido abaixo.
Fonte da imagem
Daemon
Ele escuta as solicitações de API iniciadas pelos clientes e gerencia objetos do Docker, incluindo contêineres, imagens, volumes e redes. Ele também pode se comunicar com outros daemons para gerenciar serviços do Docker, especialmente para gerenciar grandes redes do Docker.
Cliente
Os usuários do Docker podem se comunicar com o daemon usando o Docker Client. Os usuários executam comandos como “Docker run …” usando um cliente como CLI, que então encaminha esses comandos para o Docker (daemon), executando-os. O cliente Docker se comunica com vários daemons.
Registros
Ele armazena imagens do Docker e pode ser público ou privado. O Docker está configurado para procurar imagens por padrão no Docker Hub. Quando o cliente emite um comando pull ou run, as imagens são extraídas dos repositórios.
Objetos do Docker
Ao trabalhar com o Docker, interagimos com diversos objetos como containers, imagens, volumes, redes, etc.
Alguns desses objetos são
Imagens
É um modelo somente leitura e contém instruções para criar contêineres. Ele também contém metadados que descrevem os recursos do contêiner. Os usuários podem extrair imagens do registro do Docker e criar camadas de imagens graváveis em cima delas para criar imagens personalizadas para atender aos requisitos de seus aplicativos. Algumas ideias populares incluem Ubuntu, Nginx, MySQL, etc. Essas ideias podem ser compartilhadas entre equipes, o que as ajuda a trabalhar colaborativamente em um aplicativo.
Containers
Os contêineres são instâncias de imagens que fornecem ambientes isolados para os aplicativos. Eles só têm acesso aos recursos definidos pelas imagens usadas para construí-los.
Rede
O Docker Networks permite que contêineres isolados na mesma rede se comuniquem e compartilhem recursos. Algumas redes fornecidas pelo Docker incluem bridge, host, overlay, Macvlan, etc.
Armazenar
O Docker permite armazenar dados na camada de contêiner gravável com a ajuda de drivers. O Docker permite quatro opções de armazenamento persistente – Docker Volumes, Volume Containers, Directory Mounts e Storage Plugins.
A opção de armazenamento mais utilizada são os volumes. Eles são colocados no sistema de arquivos do host e permitem que vários contêineres compartilhem e gravem dados dentro desses volumes.
Conclusão
O Docker usa um conjunto de tecnologias subjacentes de última geração para fornecer serviços eficientes de conteinerização a seus usuários. Sem dúvida, nos últimos anos, o Docker começou a ganhar força entre a comunidade de desenvolvedores e continuará a fazê-lo nos próximos anos.
Devido à ampla gama de benefícios fornecidos pelos contêineres, como eficiência de recursos, escalabilidade, etc., ele garante sua posição no topo do convés.
Neste artigo, discutimos alguns dos conceitos mais essenciais do Docker, como o fluxo de trabalho do Docker, sua arquitetura e as tecnologias subjacentes, os vários objetos do Docker, como contêineres, imagens, registros, redes etc.
Agora você está no caminho certo para mergulhar profundamente no belo mundo dos Docker Containers. Agora você deve entender melhor como os diferentes recursos do Docker funcionam juntos para fornecer vários recursos que permitiriam criar, implantar e compartilhar seus aplicativos perfeitamente.
Aprenda a arquitetura do Docker com upGrad
Comece sua jornada de criação de aplicativos em um ritmo acelerado com o upGrad.
upGrad Educação Unip. está oferecendo um curso exclusivo de especialização em desenvolvimento de software em DevOps, que deixa os aspirantes prontos para serem absorvidos por grandes gigantes de TI.

Destaques do curso
O Programa PG Executivo do upGrad em Especialização em Desenvolvimento de Software em Big Data é um curso on-line cuidadosamente projetado, segregado em 12 meses.
Neste currículo, você
- Obtenha acesso exclusivo ao conteúdo de Data Science e Machine Learning
- Trabalhe em projetos e tarefas ao vivo
- Obtenha um suporte de carreira de 360 graus
- Aprenda dez linguagens e ferramentas de programação
- Obtenha orientação estudantil dedicada
Prepare-se para o desenvolvimento de aplicativos DevOps com o upGrad.
Porque esperar
Aplicar hoje!
