M05·01Introdução

CAPÍTULO 01

Introdução

Do "na minha máquina funciona" à solução: o que são containers, como diferem de VMs, e por que a stack funciona.

Por Thiago Souza8 min de leituraAtualizado em 2026-05

O famoso "na minha máquina funciona"

Imagine a cena: você terminou sua aplicação, testou tudo no seu computador, está perfeita. Manda para o colega... e quebra. Manda para produção... e quebra de novo. Por quê?

Porque a sua máquina tem:

  • Uma versão específica do Node.js (ou Java, ou Python, ou Go)
  • Bibliotecas instaladas há meses (algumas você nem lembra)
  • Variáveis de ambiente configuradas
  • Um sistema operacional com configurações próprias

A máquina do colega tem outra realidade. O servidor de produção tem uma terceira realidade. É uma bagunça.

Problemas que containers resolvem

Containers atacam vários problemas de uma vez só:

ProblemaSolução com containers
"Funciona na minha máquina"A aplicação roda igual em qualquer lugar
Conflito de dependênciasCada aplicação tem seu próprio "ambiente" isolado
Deploy demoradoSobe um container em segundos
Servidor inflado com mil coisasCada serviço fica em seu container
Difícil escalarSobe N cópias do mesmo container
Difícil padronizar ambientesDev, staging e prod usam a mesma imagem

A analogia da marmita

Pensa numa marmita: ela tem o arroz, o feijão, a carne, tudo junto, fechado, pronto pra comer. Você pode levar pra qualquer lugar — escritório, parque, casa de amigo — e comer exatamente a mesma coisa.

Container é a marmita da sua aplicação. Dentro dele tem tudo o que ela precisa pra rodar: código, bibliotecas, runtime, configurações. Você empacota uma vez e roda em qualquer lugar que tenha um "micro-ondas" (Docker, Kubernetes, etc.).

Container vs Máquina Virtual

Uma dúvida clássica: "isso não é a mesma coisa que uma VM?"

Não. A diferença é importante:

MÁQUINA VIRTUAL                    CONTAINER
┌─────────────────┐                ┌─────────────────┐
│   App           │                │   App           │
├─────────────────┤                ├─────────────────┤
│   Bibliotecas   │                │   Bibliotecas   │
├─────────────────┤                ├─────────────────┤
│   SO Convidado  │  ← pesado!     │  (compartilha   │
│  (Linux/Win)    │     GBs        │   o kernel do   │
├─────────────────┤                │   host)         │
│   Hypervisor    │                ├─────────────────┤
├─────────────────┤                │   Docker Engine │
│   SO Hospedeiro │                ├─────────────────┤
├─────────────────┤                │   SO Hospedeiro │
│   Hardware      │                ├─────────────────┤
└─────────────────┘                │   Hardware      │
                                   └─────────────────┘
  • VM: Cada máquina virtual tem um sistema operacional inteiro dentro. Pesado, lento pra subir (minutos), gasta muita RAM e disco.
  • Container: Compartilha o kernel do sistema hospedeiro. Leve, sobe em segundos, gasta MB ao invés de GB.