Por Thiago Marques
O pai ta on!!
Até agora entendemos o que é um container, como o Docker funciona sob esse modelo e como utilizar o Docker Compose para auxiliar a criação de várias máquinas. Mas conforme vamos nos aprofundando surgem novas dúvidas, como:
• Beleza, mas como tudo isso funciona?
• Como o Docker controla e gerencia os containers?
• Existe licenciamento para utilizar?
Nesse post iremos detalhar um pouco mais sobre o conceito da plataforma para entender tudo isso.

A Arquitetura Docker

Fonte

Docker Client / Remote API
Quando estamos logados em um terminal e executamos comandos como docker ps, docker images e etc, utilizamos o command line interface (CLI) do docker, de forma que, nessas condições, podemos dizer que nosso terminal é um docker client.
Assim conseguimos interagir com o daemon que está no host para nos trazer informações dos containers, das imagens e etc. Além do cliente, é possível interagir também via remote API. Quanto utilizamos o docker em uma máquina diferente do Jenkins, por exemplo, precisamos efetuar a configuração de um remote API para o deploy de um build funcionar.
Note que para instalação do cliente/server em uma instância Amazon Linux 2, é necessário instalar via amazon-linux-extras. A AWS já possui uma excelente documentação de como fazer isso basta acessar o link: How-to-install-docker-Amazon-Linux

Docker daemon / runtimes

Depois da versão 1.11 do Docker (que até então era um grande monolítico), ele passou a segmentar em daemons as operações, sendo:
• dockerd ficou responsável por receber e interpretar os comandos e APIs do cliente;
• containerd ficou com o trabalho mais ‘pesado’ de controlar as imagens e containers, e executar os processos do runC;
• runC que é quem de fato lida com o gerenciamento dos containers.
Note que com a segmentação e a disponibilização dos códigos, podem existir outros runtimes para essas funções, como é o caso do CRI-O, que é uma alternativa ao containerd, ou o CRUN e o RAILCAR que são alternativas ao runC.
NaAWS os runtimes utilizados pelo Fargate são o containerd e o runC.

Fonte: Docker

Docker Registry

Finalizando a parte de arquitetura temos os Registries, que são os repositórios de onde é possível realizar o download/upload dos docker images.
Veja na imagem inicial desse post que quando fazemos o primeiro pull (docker pull ) o processo seguido é:

Nesse caso (apenas o pull) o containerd se registra no repositório, procura a imagem, e faz seu download para o repositório local. O runC não entra no processo ainda, pois não estamos de fato criando um container, apenas baixando a imagem.
A vantagem de ter um repositório central, além de te poupar espaço, é que ele pode garantir outras características como:
• Ter um repositório privado;
• Possibilidade de utilizar SSO e colaboração;
• Acesso a imagens oficiais;
• Scan de vulnerabilidades para as imagens;
• Integração com CI/CDs.

Atualmente o Docker Hub, é o repositório mais utilizado, no qual você pode realizar o push (enviar) ou o pull (receber) as imagens, e possui a versão paga e gratuita. Obviamente na versão gratuita você tem alguns limites, como o bloqueio de 100 pulls por 6horas (veja os limites aqui)
A AWS possui a sua própria solução de registry chamada ECR, o que se mostra ser eficiente para integração de serviços como o ECS e o Fargate. Contudo soluções como o Harbor, para IaaS também pode ser uma saída interessante caso você utiliza pull de forma constante.
That’s all folks! Be Happy!!!

Veja os outros artigos sobre Docker!
Entendendo Docker
Docker Compose

OUTRAS PUBLICAÇÕES

Entendendo o AWS Transfer Family

O AWS Transfer Family é uma ferramenta da AWS que pode te ajudar a sanar muitos problemas! Entenda de forma prática como ele funciona! 14/09/2023

Dados em tempo real na AWS

Entenda o que são esses tipos de dados e como a AWS nos ajuda a usá-los da melhor forma. Diariamente nós geramos dados de diferentes

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações