DEV Community

Cover image for 🐳 Descomplicando o Docker – do zero ao container sem surtar
Fabio Rocha
Fabio Rocha

Posted on

🐳 Descomplicando o Docker – do zero ao container sem surtar

E aí, dev que já ouviu falar de Docker mil vezes, mas nunca entendeu direito o que é um container? Ou pior: já tentou aprender, se perdeu em mil comandos, mil configurações, e acabou voltando para a velha máquina virtual porque "pelo menos isso eu entendo"?

Calma. Respira. Você não está sozinho.

O livro "Descomplicando o Docker" nasceu exatamente disso: da necessidade de tornar containers acessíveis para quem escreve, implanta ou opera código, sem a necessidade de anos de prática ou ferramentas personalizadas. E a boa notícia? Ele está disponível gratuitamente, liberado durante a pandemia pelo autor Jeferson Fernando.

Neste post, vou te dar um panorama do que você vai encontrar nesse material e, principalmente, te mostrar que Docker não é um bicho de sete cabeças. Bora? 🚀


📦 O que é um container, afinal?

Vamos começar pelo básico. Container é, em português claro, o agrupamento de uma aplicação junto com suas dependências, que compartilham o kernel do sistema operacional do host.

Traduzindo: em vez de emular um sistema operacional inteiro (como faz uma máquina virtual), o container compartilha o kernel da máquina onde está rodando. Isso o torna muito mais leve, mais rápido e mais integrado ao sistema operacional.

A imagem de um container é enxuta, contendo só o necessário para a aplicação rodar. Quando em execução, o overhead é mínimo comparado à mesma aplicação rodando nativamente.

E o melhor: portabilidade. Não importa onde você criou o container — ele vai rodar em qualquer lugar que tenha Docker instalado, seja Linux, MacOS ou Windows. Adeus, "na minha máquina funciona"!


🆚 Containers vs. Máquinas Virtuais

Essa é a comparação que todo mundo faz, então vamos deixar claro:

Máquina Virtual Container
O que emula Sistema operacional completo + hardware Apenas a aplicação e suas dependências
Kernel Próprio Compartilhado com o host
Peso Pesado (GBs) Leve (MBs)
Inicialização Minutos Segundos
Densidade Poucas VMs por host Muitos containers por host

Como o livro explica: "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, tornando-o portátil".


🕰️ De onde veio tudo isso? (A história que ninguém conta)

Containers não são novidade. Durante décadas já se usava chroot em sistemas Unix para isolar filesystem. Depois vieram os Jails do FreeBSD, o Solaris Zones da Sun, e o OpenVZ, que popularizou os VPS.

Mas o Docker só nasceu em 2013. A história começa em 2008, quando Solomon Hykes fundou a dotCloud, uma empresa de PaaS que não era atrelada a nenhuma linguagem específica.

Em março de 2013, a dotCloud decidiu abrir o código do core de sua plataforma. Assim nascia o Docker. Em seis meses, o projeto já tinha mais de 6 mil stars no GitHub e 170 contribuidores.

A versão 1.0 veio 15 meses depois, já "production ready", com o Docker Hub como repositório público de imagens. Empresas como Spotify já usavam em larga escala, e AWS, Google e Red Hat logo abraçaram a tecnologia.

O segredo do sucesso? Como o próprio livro diz: a maior inovação do Docker não é tecnológica, é tornar a tecnologia acessível a todos — sem anos de prática, sem ferramentas personalizadas.


🔄 Copy-On-Write: a mágica por trás das camadas

Um dos conceitos mais legais do Docker é o Copy-On-Write (COW). Sabe a analogia do livro? É como ter um livro onde você pode fazer anotações, mas cada vez que você encosta a caneta na página, alguém tira um xerox e te entrega a cópia.

Na prática: um novo recurso (bloco em disco ou área em memória) só é alocado quando for modificado. Isso permite que várias imagens compartilhem camadas, economizando espaço e acelerando builds.


🚀 Mãos à obra: seu primeiro container

Chega de teoria. Vamos rodar o clássico hello-world:

docker container run hello-world
Enter fullscreen mode Exit fullscreen mode

O que acontece por baixo dos panos? Quatro etapas:

  1. O comando docker se comunica com o daemon
  2. O daemon verifica se a imagem existe localmente; se não, baixa do Docker Hub
  3. O daemon cria um container usando a imagem
  4. O daemon envia a saída de volta para o terminal

Se tudo der certo, você vê a mensagem "Hello from Docker!" — e pronto, você acabou de rodar seu primeiro container. 🎉

Para listar as imagens baixadas:

docker image ls
Enter fullscreen mode Exit fullscreen mode

A saída mostra: REPOSITORY, TAG, IMAGE ID, CREATED e SIZE.


🧱 Dockerfile: automatizando a criação de imagens

Rodar comandos na linha é ótimo para aprender, mas ninguém vive de comando manual. O Dockerfile é um arquivo onde você define tudo: imagem base, aplicativos a instalar, comandos a executar, volumes, etc..

Exemplo simples:

FROM debian
RUN /bin/echo "HELLO DOCKER"
Enter fullscreen mode Exit fullscreen mode

Depois é só buildar:

docker build -t tosko:1.0 .
Enter fullscreen mode Exit fullscreen mode

O Docker executa cada instrução como uma camada, e o resultado final é uma imagem pronta para rodar.


⚙️ Gerenciando recursos: não deixe seus containers comerem o host

Por padrão, um container sobe sem limite de recursos, podendo impactar o host. Para evitar surpresas, você pode limitar memória e CPU:

Memória:

docker container run -ti -m 512M --name meu_container debian
Enter fullscreen mode Exit fullscreen mode

CPU:

docker container run --cpus=0.5 --name meu_nginx nginx
Enter fullscreen mode Exit fullscreen mode

O parâmetro -m define o máximo de memória que o container pode usar, e --cpus=0.5 limita a meio core.


🎯 Por que você deveria aprender Docker (de verdade)

O prefácio do livro é direto: "o mais importante não é o Docker ou os containers. O mais importante é elevar a qualidade das nossas aplicações" — reduzir custos, entregar código melhor, mais confiável e mais rápido.

Docker te permite:

  • Entregar aplicações mais rapidamente
  • Implementar CI/CD com facilidade
  • Configurar variáveis de ambiente em segundos
  • Garantir consistência entre desenvolvimento e produção
  • Escalar ambientes em minutos

E o melhor: você não precisa de anos de prática para começar. O livro "Descomplicando o Docker" existe exatamente para isso — para te levar do zero ao cluster, de forma leve e prática.


💡 Conclusão: descomplicando de verdade

Docker não é mágica, mas parece. E a beleza está justamente na simplicidade: uma aplicação, suas dependências, um kernel compartilhado, e pronto — você tem portabilidade, leveza e velocidade.

O livro "Descomplicando o Docker" é leitura obrigatória para quem quer entender de verdade como tudo funciona. E o melhor: é gratuito e aberto para a comunidade.

Então da próxima vez que alguém falar "sobe um container aí", você não vai suar frio. Vai sorrir e dizer: "tranquilo, já tá no Dockerfile".

Já usou Docker? Ainda trava no docker build? Conta aí nos comentários! 👇

Docker #Containers #DevOps #DescomplicandoODocker


Quer mais? O livro cobre também Docker Machine, Swarm, Compose, secrets e muito mais. Vale a leitura completa — e o melhor, sem pagar nada por isso. 🐳

Top comments (0)