DEV Community

Cover image for O que são os containers? Uma introdução ao Docker
Vanessa Nascimento
Vanessa Nascimento

Posted on • Edited on

O que são os containers? Uma introdução ao Docker

📦 O que é container?

Containers são como a mais nova moda no mundo da tecnologia, uma evolução da virtualização que permite rodar várias versões de um sistema operacional, cada uma na sua caixinha, no mesmo host. A popularidade chegou com o Docker em 2013, que trouxe uma interface amigável e uma plataforma para compartilhar containers prontos para uso. Nascidos no universo Linux, os containers são baseados em tecnologias como namespaces, cgroups e chroot. O que são elas?

  • Os namespaces garantem que cada container tenha sua visão particular do sistema operacional, como se fosse um adolescente em seu quarto. Isso inclui seu próprio espaço de nomes de processo, rede e sistema de arquivos montado. 🏘️

  • Os cgroups, ou grupos de controle, são como a mamãe Linux controlando o uso de recursos (como CPU, memória, disco I/O, rede, etc.) de um conjunto de processos, garantindo que ninguém passe dos limites. 🧐

  • O chroot é como se fosse um truque de mágica que muda o diretório raiz percebido por um processo, fazendo com que o processo e seus descendentes vejam um pedaço do sistema de arquivos como se fosse todo o sistema de arquivos, tipo um tour guiado com acesso VIP.🚪

Confuso? 🫠 Vamos à um exemplo então:
Agora imagine que você está numa festa 🥳, nela há um buffet de mini pizzas individuais para cada convidado. Cada mini pizza é como um "container", com sua própria "visão" da pizza (seus próprios ingredientes), isolada das outras, tipo os namespaces. Além disso, é preciso garantir que cada pizza tenha uma quantidade equilibrada de ingredientes, tipo os cgroups, que controlam o uso de recursos de cada container. Por último, cada mini pizza está em sua própria bandeja de papel, o que impede que os ingredientes de uma pizza entrem em contato com os de outra. Isso é parecido com o chroot, que dá um nível extra de isolamento. 🍕😋

Então, a computação em container permite que você rode várias versões isoladas do sistema operacional no mesmo host, cada uma com seus próprios recursos e isolada das demais, assim como você pode preparar várias mini pizzas, com suas especificidades, numa única festa. Ao contrário das máquinas virtuais (VMs), que emulam um ambiente completo, incluindo um sistema operacional convidado, os containers compartilham o kernel do sistema operacional hospedeiro, o que os torna mais leves e eficientes em termos de recursos. Essa abordagem oferece um equilíbrio entre isolamento e eficiência, sendo ideal para ambientes de desenvolvimento e implantação de aplicativos modernos.

✨ PS.: Um mantra para sempre te acompanhar quando te perguntarem qual a diferença entre máquina virtual (VM) e container (Docker), tenha em mente que:

Na máquina virtual você emula um novo sistema operacional dentro do sistema operacional do host. Já no container você emula somente as aplicações e suas dependências.

O que é o Docker?

Docker é uma plataforma de código aberto que foi lançada em 2013 por uma empresa chamada dotCloud, que depois se tornou Docker Inc. 👩‍💻 O Docker foi construído com base na tecnologia de containerização do Linux, que já existia há um bom tempo, mas que ainda não tinha uma interface amigável nem uma maneira padronizada de distribuir e rodar containers.

O Docker chegou e transformou a tecnologia de containers em algo mais amigável e acessível. Ele se tornou um verdadeiro mágico da tecnologia, empacotando software em pequenas unidades chamadas containers. Esses containers, como vimos, são essas pequenas caixinhas que incluem tudo o que o software precisa para funcionar: código, tempo de execução, ferramentas do sistema, bibliotecas e configurações. É como se cada container fosse uma pequena casa, com tudo o que você precisa para viver com conforto e autonomia. 🏡

Todo mundo tem um passado...

Antes do Docker, já existiam algumas tecnologias que também trabalhavam com a ideia de isolar processos. Vamos falar um pouco sobre elas. Temos algumas como a LXC (Linux Containers), a Jails, a Solaris Zones e a VPS (Virtual Private Server).

A LXC, ou Linux Containers, é uma tecnologia que permite a criação e execução de múltiplas instâncias isoladas do Linux no mesmo host. É como se cada instância fosse um apartamento em um grande prédio, cada um com suas próprias características e configurações. 🏢

Jails é uma tecnologia introduzida pelo sistema operacional FreeBSD. Ela permite a execução de várias instâncias isoladas do FreeBSD no mesmo host, como se fossem várias casas geminadas compartilhando o mesmo terreno. 🏘️

Solaris Zones, também conhecido como Solaris Containers, é uma tecnologia do sistema operacional Solaris. Ela permite a execução de múltiplas instâncias isoladas do Solaris no mesmo host, como se fossem várias cabanas em uma ilha. 🛖🏝️

Já a VPS (Virtual Private Server) é uma tecnologia que permite a execução de múltiplas instâncias isoladas de um sistema operacional em um único servidor físico. É como se fossem várias lojas em um shopping, cada uma com seu próprio espaço. 🏬

O Docker, por sua vez, pegou essas tecnologias existentes e deu um passo adiante. Ele introduziu uma camada de abstração e automação que torna o processo de criação, implantação e execução de aplicações em containers muito mais simples e eficiente. Além disso, o Docker introduziu um formato padronizado para a distribuição de aplicações em containers, facilitando o compartilhamento e a colaboração, como se fosse uma rede social de containers.

Bom, espero que tenha gostado do artigo e que esclareça suas dúvidas dos princípios de Docker e o porquê é tão popular (e exigido para vagas em tech). 😄

Um curso que me ajudou muito a entender, criar este artigo e usar o Docker nos meus projetos foi o Docker Essentials da LinuxTips. É gratuito e qualidade de primeira! 🥇

Top comments (0)