DEV Community

Cover image for Docker: Container, Namespaces e Cgroups
Antonia Luciana Pires
Antonia Luciana Pires

Posted on

Docker: Container, Namespaces e Cgroups

Docker é uma ferramenta aberta (open source) que permite gerenciar os famosos containers Linux. No presente texto,que não pretende esgotar o assunto, reuni três conceitos que considero importante para entendimento inicial sobre a utilização desse recurso na área de tecnologia, sobretudo para o dia a dia de desenvolvedores.

Para começar, isolamento

Entende-se por isolamento uma forma de empacotar uma aplicação com todos os recursos necessários para sua execução e, desse modo, o software sempre irá se comportar da mesma maneira, independente do ambiente (desenvolvimento, homologação e produção).

Alt Text

O que é Docker?

Nesse contexto, o Docker é responsável por gerenciar vários processos, ou serviços, de maneira isolada do host, como banco de dados e uma aplicação, por exemplo, sendo executados em containers diferentes.

Container, Namespaces e Cgroups

Seguindo uma definição básica,fornecida pelo blog Escotilha Livre, containers são:

[...] abstrações virtuais de uma técnica de virtualização conhecida como virtualização a nível de sistema operacional.

Ele é uma forma de segregar processos e sua virtualização é considerada menos isolada pelo fato de existir o compartilhamento de partes do Kernel entre o host e o container. Isso torna a inicialização do processo uma execução rápida que pode levar segundos.

Essa separação, ou isolamento, é possível porque o Docker utiliza de dois recursos do Linux Kernel: Namespaces e Cgroups.

  • Os Namespaces são responsáveis por gerar o isolamento de grupos de processos em seu nível lógico, como o gerenciamento de usuários, rede, etc., garantido que o container não enxergue os processos do host e vice-versa. Logo, ao criar um container, são criados namespaces como pid(Process ID) para isolar processos, net(Network) para controlar e isolar as redes de cada container,ipc(Inter Process Communication) que permite a comunicação entre processos, etc.

  • Para gerenciar os recursos físicos que são compartilhados entre esses processos existe o Cgroups. Ele fornece ao Docker o poder de compartilhar CPU, memória, I/O, etc., entre o host e o container. Além disso, é possível limitar ou restringir esses recursos para containers específicos.

Alt Text

Conclusão

Portanto, com base nesses conceitos iniciais é possível verificar benefícios na utilização dessa ferramenta como, velocidade, praticidade, agilidade, disponibilidade e economia de recursos. Nos próximos resumos pretende-se abordar conceitos mais focados na ferramenta, como imagem, volumes e muito mais.

Referências

Container docker: o que é e quais são as vantagens de usar?
No final das contas: o que é o Docker e como ele funciona?
Linux namespaces
Namespace, o que é?
Capítulo 1. Introdução ao Grupos de Controle (Cgroups)
Containers com Docker - Do desenvolvimento à produção

Top comments (3)

Collapse
 
gabrielmagevski profile image
Gabriel Magevski

Estou aprendendo Docker e o seu resumo me fez entender bastante coisa! Obrigado :D

Collapse
 
undevalmeida profile image
André Almeida

Top demais!

Collapse
 
sc0v0ne profile image
sc0v0ne

Can it be said that the container is a computer? Which works in parallel to the main one, in this case being the physical hardware