Docker é ferramenta que permite você rodar aplicações em “containers” — caixas autossuficientes com tudo que app precisa (código, dependências, config). Em 2026, Docker é padrão da indústria: 86% dos desenvolvedores usam containers. Para iniciantes, Docker parece complicado, mas é mais simples que parece. Este tutorial mostra exatamente o que é Docker, como instalar, criar seu primeiro container, e deploy em produção.
Se você já programou mas nunca usou Docker, este artigo vai fazer “click” do conceito para prática em 30 minutos.
- O que é: Container = app em caixa com tudo que precisa. Roda igual em seu notebook, servidor colega, produção.
- Por que: “Funciona em mim” = problema resolvido. Não há mais “diferença dev vs produção”.
- Instalação: 2 minutos download, 5 minutos setup
- Primeiro container: `docker run hello-world` = feito
- Curva aprendizado: Baixa para iniciantes. Conceitos principais em 2h.
O que é Docker e Por Que Existe
Imagine você desenvolveu app Node.js. Funciona perfeitamente em seu notebook (Windows). Você coloca no servidor de produção (Linux) e… quebra. Por quê? Porque seu notebook tem Node 18, servidor tem Node 16. Você tem npm packages diferentes. Versão de OpenSSL diferente.
Esse é problema que Docker resolve: se funciona no seu docker, funciona em produção. Ponto final.
Como Era Antes do Docker (VM)
Para resolver diferença dev vs produção, empresas usavam VMs (máquinas virtuais). VM é computador inteiro virtualizado dentro de servidor — 10GB por VM. Para rodar 10 apps, precisa 100GB em VMs.
Como É Com Docker (Containers)
Container é apenas processo isolado — 100MB por container. Mesmo 100 apps = 10GB, não 1TB. Containers são 100x mais leve que VMs.
Analogia: VM = montar casa completa em seu servidor. Container = montar quarto dentro da casa. 100 quartos usam menos espaço que 100 casas.
Conceitos Principais do Docker
1. Image (Imagem Docker)
Image é template — receita de como construir seu container. Imagem contém:
- Sistema operacional base (Linux slim)
- Dependências (Node, Python, etc.)
- Seu código
- Config de como executar
Analogia: Image = foto receita de bolo. Container = bolo feito usando receita.
2. Container (Contêiner)
Container é instância rodando de uma image. Você cria image uma vez, roda container 100 vezes com dados diferentes.
3. Dockerfile
Dockerfile é arquivo de texto com instruções de como construir image. Exemplo:
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]Este Dockerfile:
- FROM node:18 = começar com imagem Node 18
- WORKDIR = pasta do app é /app
- COPY = copia seus arquivos para container
- RUN = instala npm packages
- EXPOSE = container usa porta 3000
- CMD = comando para rodar app
4. Docker Hub (Repositório)
Docker Hub = GitHub para Docker images. Millions de images públicas prontas para usar (Node, Python, MySQL, WordPress, etc.).
Instalando Docker
Windows/Mac: Docker Desktop
- Acesse docker.com/products/docker-desktop
- Clique “Download for Windows” ou “Download for Mac”
- Execute instalador, next next next
- Reinicie computador
- Pronto! Docker está instalado
Linux: Via Linha de Comando
curl -fsSL https://get.docker.com -o get-docker.shsudo sh get-docker.shsudo usermod -aG docker $USER(para não precisar sudo)- Reinicie terminal
Verificar Instalação
Abra terminal/cmd e digite:
docker --versionDeve retornar algo como “Docker version 26.1.0”
Seu Primeiro Container
Vamos rodar container mais simples:
docker run hello-worldSaída esperada:
Hello from Docker!
This message shows that your installation appears to be working correctly.Parabéns! Você rodou seu primeiro container.
O Que Aconteceu
- Docker procurou image “hello-world” localmente (não encontrou)
- Baixou de Docker Hub (~1KB)
- Criou container dessa image
- Executou (printou mensagem)
- Container terminou
Containers Práticos: Node, Python, MySQL
1. Rodando Node.js
docker run -it node:18Flags:
- -i = interativo (você digita)
- -t = terminal (mostra output)
Agora você está dentro container Node! Digite:
node
console.log("Hello from Docker")
process.exit()Para sair do container, digit Ctrl+D ou exit.
2. Rodando Servidor Web com Python
docker run -p 8000:8000 python:3.11 python -m http.serverFlags:
- -p 8000:8000 = mapeia porta 8000 container para 8000 seu computador
Agora acesse http://localhost:8000 no navegador — servidor Python rodando em container!
3. Rodando MySQL
docker run -d \
-e MYSQL_ROOT_PASSWORD=senha123 \
-p 3306:3306 \
mysql:8.0Flags:
- -d = detached (roda em background)
- -e MYSQL_ROOT_PASSWORD = variável ambiente (senha root)
- -p 3306:3306 = porta MySQL
MySQL está rodando em Docker! Conecte com:
mysql -h 127.0.0.1 -u root -psenha123Criando Sua Própria Image
Agora vamos criar image customizada para app Node.
Passo 1: Crie Dockerfile
Crie arquivo chamado “Dockerfile” (sem extensão) no seu projeto:
FROM node:18-alpine
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Passo 2: Build Image
docker build -t meu-app:1.0 .Flags:
- -t meu-app:1.0 = tag “meu-app” versão 1.0
- . = Dockerfile está no diretório atual
Passo 3: Rode Container
docker run -p 3000:3000 meu-app:1.0Seu app está rodando em Docker!
Passo 4: Envie para Docker Hub (Opcional)
- Crie conta em hub.docker.com (grátis)
- Docker login:
docker login - Tag image com seu username:
docker tag meu-app:1.0 seu-username/meu-app:1.0 - Push:
docker push seu-username/meu-app:1.0
Docker Compose (Múltiplos Containers)
Aplicação real precisa: Web server + Database + Cache. Docker Compose permite rodar múltiplos containers com um comando.
Exemplo: Node + MySQL
Crie arquivo “docker-compose.yml”:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
DATABASE_URL: mysql://root:senha123@db:3306/myapp
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: senha123
MYSQL_DATABASE: myapp
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:Agora rode tudo com:
docker-compose upBoom! Web server + MySQL rodando, conectados, automático.
Comandos Docker Compose Úteis
docker-compose up= rodar tudodocker-compose down= parar tudodocker-compose logs= ver logsdocker-compose exec web bash= entrar em shell do container
Comandos Docker Essenciais
| Comando | O que faz | Exemplo |
|---|---|---|
| docker run | Cria e executa container | docker run -p 8000:8000 python:3.11 |
| docker ps | Lista containers rodando | docker ps |
| docker ps -a | Lista todos containers (parados + rodando) | docker ps -a |
| docker stop | Parar container | docker stop container_id |
| docker rm | Deletar container | docker rm container_id |
| docker images | Listar images instaladas | docker images |
| docker build | Criar image do Dockerfile | docker build -t meu-app . |
| docker logs | Ver output do container | docker logs container_id |
Perguntas Frequentes sobre Docker
Docker vs Virtual Machine: qual usar?
Docker para aplicações (rápido, leve). VM para sistemas inteiros ou segurança máxima. Em 2026, tendência é Docker. Profissionais que aprendem Docker são 50% mais requisitados que VM experts.
Quanto tempo para aprender Docker?
Conceitos básicos: 2-4 horas. Para usar profissionalmente: 1-2 semanas. Para dominar (Kubernetes, best practices): 3-6 meses. Curva de aprendizado é suave.
Docker funciona em Windows/Mac/Linux?
Sim. Windows/Mac usam Linux VM lightweight internamente. Linux tem Docker nativo. Diferença é mínima para usuário — Docker funciona igual em todos.
Posso rodar Docker em produção?
Sim, 86% das empresas usam Docker em produção 2026. Mas use orquestrador (Kubernetes, Docker Swarm) para múltiplos containers. Docker puro é para dev/staging.
Docker é grátis?
Sim, 100% grátis. Open source. Docker Desktop é grátis para pequenas empresas (< $10M revenue). Para grandes empresas, há versão paga (mas rara usar).
Como salvar dados em Docker?
Containers são efêmeros (desaparecem ao parar). Use volumes para persistência: `docker run -v /meu/dados:/app/data`. Ou use banco de dados em container separado.
Proximos Passos
Para Iniciantes
- Instale Docker Desktop
- Rode 5 containers (hello-world, node, python, mysql, wordpress)
- Crie Dockerfile para seu projeto
- Suba seu projeto em Docker Hub
Intermediário
- Use Docker Compose para app multi-container
- Aprenda CI/CD (GitHub Actions rodar testes em Docker)
- Deploy container em cloud (AWS ECS, Google Cloud Run, Heroku)
Avançado
- Aprenda Kubernetes para orquesting containers em escala
- Implementar GitOps (deploy automático de containers)
- Otimizar imagens para performance/segurança
Conclusão
Docker em 2026 não é mais “nice to have” — é skill essencial para qualquer desenvolvedor. O melhor: é fácil aprender. Em poucas horas, você consegue containerizar app, rodar localmente, e fazer deploy em produção.
Comece hoje: instale Docker Desktop, rode `docker run hello-world`, crie seu primeiro Dockerfile, e deploy em Docker Hub. Confira também nosso guia de DevOps para empresas para visão mais ampla de infraestrutura.
