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.

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

Novidades da Semana 24 a 28 de maio

Todos os dias a AWS lança uma série novidades e atualizações em seus produtos que visam melhorar a vida de seus usuários. Reunimos algumas delas que fazem mais sentido para nosso mercado e que certamente aplicaremos em nosso dia a dia. Confira as novidades das últimas semanas.

Kubernetes

Entenda de forma técnica como expor serviços HTTP, TCP e UDP no Network Load Balancer e NGINX Ingress Controller no AWS EKS. – Artigo de Leandro Damascena

Darede – AWS Consulting Partner of the Year 2021 (English Version)

The APN Awards is Amazon Web Services’ recognition of the top partners in different regions around the world who in 2020 helped their customers build technology solutions for their organizations, driving digital transformation and innovation using AWS cloud services. The winners of this award have demonstrated practically how it is possible to provide the best experience in the world of cloud computing and turn it into a positive impact on businesses worldwide.

Rolar para cima

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