🚀 Capítulo 11: Contêineres (Docker) (Tema: Alien)

NOTE

Este capítulo utiliza a temática de Alien para explicar os Contêineres. Isole a sua criatura (aplicação) dentro de uma cápsula e garanta que ela rode perfeitamente em qualquer nave do universo!


1. 🎯 Objetivo da Aula

Compreender o conceito de Contêineres, a diferença entre Máquinas Virtuais e Contêineres, e como o Docker facilita o empacotamento e a distribuição de aplicações.

2. 🏢 O Cenário Prático (Seu Desafio)

No filme Alien, a tripulação da nave Nostromo precisa lidar com uma criatura perigosa. A melhor estratégia é isolá-la em uma cápsula de quarentena.

  • A cápsula tem tudo o que a criatura precisa para sobreviver ali dentro (ar, espaço).
  • Ela está totalmente isolada do resto da nave.
  • Você pode mover a cápsula para outra nave menor, e a criatura continuará vivendo lá dentro do mesmo jeito.

No mundo do desenvolvimento, nós sofremos com o problema: “Na minha máquina funciona, mas no servidor não funciona”. Isso acontece porque o seu computador tem uma versão do Python, do Node ou do banco de dados, e o servidor tem outra. O Docker resolve isso criando uma “cápsula” (o Contêiner) onde colocamos o nosso código junto com TUDO o que ele precisa para rodar. Se funciona no seu computador dentro do contêiner, vai funcionar no servidor do mesmo jeito! Seu desafio é empacotar sua aplicação!


🧠 Fundamentos: A Teoria Traduzida

Um Contêiner é uma unidade padrão de software que empacota o código e todas as suas dependências para que a aplicação seja executada de forma rápida e confiável em diferentes ambientes de computação.

⚖️ Máquina Virtual vs Contêiner:

  • Máquina Virtual (VM):
    • É pesada (pesa Gigabytes).
    • Simula um computador físico inteiro, incluindo um Sistema Operacional completo para cada VM.
    • Demora minutos para ligar.
  • Contêiner (Docker):
    • É leve (pesa Megabytes).
    • Não simula o hardware. Ele compartilha o mesmo “coração” (Kernel) do sistema operacional do computador hospedeiro.
    • Liga em segundos!

4. 📖 Exemplo Guiado: O Arquivo de Receita (Dockerfile)

Para criar um contêiner, nós escrevemos um arquivo de texto chamado Dockerfile. Ele é a “receita do bolo” de como montar a cápsula da nossa aplicação.

# 1. Use uma imagem base do Node.js
FROM node:18
 
# 2. Crie uma pasta dentro do contêiner para o código
WORKDIR /app
 
# 3. Copie os arquivos do seu computador para dentro do contêiner
COPY . .
 
# 4. Instale as bibliotecas
RUN npm install
 
# 5. Diga qual comando o contêiner deve rodar ao ligar
CMD ["node", "servidor.js"]

Com esse arquivo, qualquer pessoa no mundo pode rodar o comando docker build e terá uma réplica exata do seu ambiente de trabalho!


5. 🛠️ Prática Obrigatória 1: Vantagens do Docker

Com base na comparação entre VMs e Contêineres:

  1. Por que uma empresa preferiria rodar 50 contêineres Docker em um servidor em vez de 50 Máquinas Virtuais? (Pense em recursos como memória e processamento).
  2. O que significa a frase “Funciona na minha máquina” e como o Docker resolve esse problema clássico da TI?

6. 🛠️ Prática Obrigatória 2: Imagens e Contêineres

No mundo Docker, existe uma diferença entre Imagem e Contêiner:

  • A Imagem é o arquivo parado, a receita do bolo gravada no disco.
  • O Contêiner é a imagem em execução, o bolo assado e pronto para comer.
  1. Se você tem a imagem de um site salva no seu computador, você pode criar 3 contêineres (3 sites rodando ao mesmo tempo) usando essa mesma única imagem?

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 11 DevOps) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

mod_13_devops_e_cloud/
├── capitulos/
│   ├── capitulo_11_docker.md
│   └── codigos/
│       └── cap11/
│           └── Dockerfile

💡 Checkpoint de Lógica

O Docker revolucionou a TI porque permitiu que desenvolvedores e equipe de infraestrutura falassem a mesma língua: a língua dos contêineres!

10. 🔥 Desafio de Fixação

Pesquise o que é o Docker Hub e para que ele serve (Dica: Pense em um GitHub, mas para imagens de contêineres).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Porque os contêineres são muito mais leves e compartilham o sistema operacional. Rodar 50 VMs exigiria 50 cópias do Windows/Linux na memória, o que travaria o servidor. 50 contêineres rodam tranquilamente usando uma fração da memória.
  2. Significa que o código funciona no computador do programador, mas dá erro no servidor por diferença de configurações. O Docker resolve isso garantindo que o ambiente do programador e do servidor sejam exatamente iguais dentro da cápsula. Gabarito da Prática 2:
  3. Sim! Você pode criar quantos contêineres quiser a partir de uma única imagem base.

Capitulo Anterior | Proximo Capitulo