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.

Docker em 30 segundos

  • 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:

  1. FROM node:18 = começar com imagem Node 18
  2. WORKDIR = pasta do app é /app
  3. COPY = copia seus arquivos para container
  4. RUN = instala npm packages
  5. EXPOSE = container usa porta 3000
  6. 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

  1. Acesse docker.com/products/docker-desktop
  2. Clique “Download for Windows” ou “Download for Mac”
  3. Execute instalador, next next next
  4. Reinicie computador
  5. Pronto! Docker está instalado

Linux: Via Linha de Comando

  1. curl -fsSL https://get.docker.com -o get-docker.sh
  2. sudo sh get-docker.sh
  3. sudo usermod -aG docker $USER (para não precisar sudo)
  4. Reinicie terminal

Verificar Instalação

Abra terminal/cmd e digite:

docker --version

Deve retornar algo como “Docker version 26.1.0”

Seu Primeiro Container

Vamos rodar container mais simples:

docker run hello-world

Saí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

  1. Docker procurou image “hello-world” localmente (não encontrou)
  2. Baixou de Docker Hub (~1KB)
  3. Criou container dessa image
  4. Executou (printou mensagem)
  5. Container terminou

Containers Práticos: Node, Python, MySQL

1. Rodando Node.js

docker run -it node:18

Flags:

  • -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.server

Flags:

  • -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.0

Flags:

  • -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 -psenha123
Aviso: Nunca use “senha123” em produção. Use senha forte, 16+ caracteres com números/símbolos.

Criando 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.0

Seu app está rodando em Docker!

Passo 4: Envie para Docker Hub (Opcional)

  1. Crie conta em hub.docker.com (grátis)
  2. Docker login: docker login
  3. Tag image com seu username: docker tag meu-app:1.0 seu-username/meu-app:1.0
  4. 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 up

Boom! Web server + MySQL rodando, conectados, automático.

Comandos Docker Compose Úteis

  • docker-compose up = rodar tudo
  • docker-compose down = parar tudo
  • docker-compose logs = ver logs
  • docker-compose exec web bash = entrar em shell do container

Comandos Docker Essenciais

ComandoO que fazExemplo
docker runCria e executa containerdocker run -p 8000:8000 python:3.11
docker psLista containers rodandodocker ps
docker ps -aLista todos containers (parados + rodando)docker ps -a
docker stopParar containerdocker stop container_id
docker rmDeletar containerdocker rm container_id
docker imagesListar images instaladasdocker images
docker buildCriar image do Dockerfiledocker build -t meu-app .
docker logsVer output do containerdocker 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

  1. Instale Docker Desktop
  2. Rode 5 containers (hello-world, node, python, mysql, wordpress)
  3. Crie Dockerfile para seu projeto
  4. Suba seu projeto em Docker Hub

Intermediário

  1. Use Docker Compose para app multi-container
  2. Aprenda CI/CD (GitHub Actions rodar testes em Docker)
  3. Deploy container em cloud (AWS ECS, Google Cloud Run, Heroku)

Avançado

  1. Aprenda Kubernetes para orquesting containers em escala
  2. Implementar GitOps (deploy automático de containers)
  3. 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.