O que é Docker: Guia para Iniciantes em 2026
Se você está começando em DevOps ou desenvolvimento, é praticamente impossível não ter ouvido falar em Docker. Ele está em vagas de emprego, em pipelines de CI/CD, em deploys na nuvem e em quase todo tutorial moderno de software.
Neste guia direto ao ponto, você vai entender o que é Docker, por que ele virou padrão da indústria e como criar e rodar seu primeiro container ainda hoje.
Quer dominar Docker e DevOps na prática? Confira o curso completo: DevOps Automação Sem Enrolação na Udemy — com exemplos reais de containerização, pipelines e automação.
O que é Docker
Docker é uma plataforma open source que permite empacotar, distribuir e executar aplicações em containers. Lançado em 2013, ele se tornou o padrão de fato para containerização e mudou para sempre a forma como construímos e entregamos software.
A definição vem da própria documentação oficial do Docker:
“Docker é uma plataforma aberta para desenvolver, distribuir e executar aplicações. Ele permite separar suas aplicações da infraestrutura para que você possa entregar software rapidamente.”
Em outras palavras: Docker resolve o famoso problema “mas na minha máquina funciona”. Ele empacota o código, runtime, bibliotecas, dependências e configurações em uma unidade portátil que roda igual em qualquer lugar — laptop, servidor on-premises, AWS, Azure ou GCP.
O que é um container
Um container é uma unidade padrão de software que empacota o código e todas as suas dependências para que a aplicação rode de forma rápida e confiável em qualquer ambiente.
Pense num container como um “mini-sistema isolado” rodando sobre o sistema operacional do host. Dentro dele tem tudo que sua aplicação precisa: código, bibliotecas, variáveis de ambiente, configurações. Fora dele, nada interfere.
Diferente de uma máquina virtual, containers compartilham o kernel do sistema operacional do host, o que os torna leves, rápidos para iniciar e econômicos em recursos.
Container vs Máquina Virtual: a diferença essencial
Essa é uma das maiores dúvidas de quem está começando. As duas tecnologias parecem fazer a mesma coisa — isolar aplicações — mas funcionam em níveis muito diferentes.
| Aspecto | Container | Máquina Virtual |
|---|---|---|
| Camada de virtualização | Sistema operacional | Hardware |
| Tamanho típico | Dezenas de MB | Dezenas de GB |
| Tempo de boot | Segundos | Minutos |
| Kernel | Compartilhado com o host | Próprio (cópia completa do SO) |
| Densidade por servidor | Centenas de containers | Dezenas de VMs |
| Isolamento | Processo (namespaces, cgroups) | Hardware completo |
Resumo rápido:
- Máquina virtual virtualiza um servidor inteiro — incluindo o SO completo
- Container virtualiza apenas o que sua aplicação precisa — usando recursos do SO do host
Na prática, as duas tecnologias convivem: é comum rodar containers Docker dentro de VMs em produção, combinando o melhor dos dois mundos.
Como Docker funciona por baixo dos panos
Docker tem uma arquitetura cliente-servidor com três peças principais:
- Docker Daemon (
dockerd) — o serviço que roda em background, gerencia imagens, containers, redes e volumes - Docker Client (
docker) — o CLI que você usa no terminal, envia comandos para o daemon - Docker Registry — onde as imagens ficam armazenadas (o Docker Hub é o registro público padrão)
Por baixo, Docker usa recursos do kernel Linux como namespaces (isolamento) e cgroups (limites de recursos) para criar a “sandbox” onde o container roda. Em macOS e Windows, o Docker Desktop sobe uma VM Linux por baixo para que tudo funcione transparentemente.
Os conceitos que você precisa conhecer
Antes de colocar a mão na massa, fixe esses cinco termos:
- Imagem (Image) — template somente leitura que define o que vai rodar. É como um “molde”.
- Container — uma instância em execução de uma imagem. É como uma “peça fundida” a partir do molde.
- Dockerfile — arquivo de texto com instruções para construir uma imagem.
- Registry (Registro) — repositório onde as imagens são armazenadas e compartilhadas (Docker Hub, GitHub Container Registry, AWS ECR, Azure ACR).
- Volume — forma de persistir dados fora do container (porque container, por padrão, é efêmero).
A relação entre eles:
Dockerfile → (docker build) → Imagem → (docker run) → Container
↓
Registry (Docker Hub)
Para que serve Docker no dia a dia
Docker é usado em praticamente toda a cadeia moderna de software:
- Desenvolvimento local — subir banco de dados, Redis, Kafka em segundos sem instalar nada na máquina
- CI/CD — pipelines reproduzíveis usando containers como ambiente de build e teste
- Deploy em produção — empacotar a aplicação como imagem e rodar em qualquer ambiente
- Microsserviços — cada serviço como um container independente
- Testes automatizados — subir bancos e dependências efêmeros para suíte de testes
- Padronização de equipes — todo dev usa o mesmo ambiente, fim do “na minha máquina funciona”
Por isso Docker se conecta diretamente com tópicos como CI/CD para iniciantes, Kubernetes e Platform Engineering.
Instalando o Docker
A forma mais fácil de começar é com o Docker Desktop (Mac, Windows e Linux). Ele já vem com Docker Engine, Docker CLI, Docker Compose e até Kubernetes embutido.
- macOS / Windows: Docker Desktop
- Linux: pode usar Docker Desktop ou instalar diretamente o Docker Engine via gerenciador de pacotes (
apt,dnf, etc.)
Depois da instalação, valide com:
docker --version
docker run hello-world
Se aparecer a mensagem de boas-vindas, está pronto.
Comandos Docker que você usa todo dia
Não precisa decorar tudo, mas estes 10 comandos resolvem 80% do uso real:
# Imagens
docker pull nginx:latest # baixa uma imagem do registry
docker images # lista imagens locais
docker rmi nginx:latest # remove uma imagem
# Containers
docker run -d -p 8080:80 nginx # roda nginx em background, mapeando porta
docker ps # lista containers em execução
docker ps -a # inclui containers parados
docker stop <id> # para um container
docker rm <id> # remove um container parado
# Inspeção e debug
docker logs <id> # vê os logs do container
docker exec -it <id> /bin/sh # abre um shell dentro do container
A flag -p 8080:80 é uma das primeiras a entender bem: ela mapeia a porta 8080 da sua máquina para a porta 80 do container.
Exemplo prático: containerizando uma aplicação Node.js
Nada explica Docker melhor do que um exemplo real. Vamos containerizar uma aplicação Node.js simples.
Crie um arquivo Dockerfile na raiz do projeto:
# syntax=docker/dockerfile:1
# Imagem base oficial e leve
FROM node:24-alpine
# Diretório de trabalho dentro do container
WORKDIR /app
# Copia os manifestos primeiro para aproveitar cache
COPY package*.json ./
# Instala dependências de produção
RUN npm ci --omit=dev
# Copia o restante do código
COPY . .
# Documenta a porta usada pela aplicação
EXPOSE 3000
# Comando que roda quando o container sobe
CMD ["node", "index.js"]
Construa e rode:
docker build -t minha-app:1.0 .
docker run -d -p 3000:3000 --name minha-app minha-app:1.0
docker logs minha-app
Pronto: sua aplicação está rodando dentro de um container, isolada do sistema, e essa mesma imagem vai rodar identicamente no laptop do colega, no pipeline de CI e em produção.
Quer aprender Docker do zero, com Dockerfile, Docker Compose e deploy real? O curso DevOps Automação Sem Enrolação cobre exatamente esse caminho.
Imagens menores com multi-stage build
Um padrão importante já no início: multi-stage build. Você usa um “estágio de build” pesado para compilar e um “estágio final” enxuto só com o que precisa rodar.
Exemplo clássico, app Node + servir estático com Nginx:
# syntax=docker/dockerfile:1
# Estágio 1: build dos assets
FROM node:24-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
# Estágio 2: imagem final, só com o que vai a produção
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
A imagem final fica com dezenas de MB em vez de centenas. Em produção, isso significa deploys mais rápidos, menos custo de storage e menor superfície de ataque.
Docker Compose: orquestrando múltiplos containers
Aplicações reais raramente são um container só. Quase sempre você tem app + banco + cache + algum serviço extra.
Para isso existe o Docker Compose: um arquivo docker-compose.yml define todos os serviços e sobe tudo com um comando. Exemplo mínimo:
services:
api:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: example
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Para subir tudo:
docker compose up -d
docker compose logs -f
docker compose down
Compose é um dos primeiros “upgrades” que você faz depois de dominar docker run.
Boas práticas para começar com o pé direito
Erros comuns de quem está começando com Docker — e como evitar:
- Não use
latestem produção. Sempre fixe a versão (nginx:1.27-alpine,node:24-alpine). Reprodutibilidade é regra de ouro. - Prefira imagens alpine ou slim. Menores, mais rápidas e com menor superfície de ataque.
- Não rode containers como root. Use
USERno Dockerfile para reduzir risco em caso de comprometimento. - Aproveite o cache de layers. Copie
package.jsonantes de copiar o resto do código — assim o cache denpm installé reutilizado. - Use
.dockerignore. Evita copiarnode_modules,.gite arquivos sensíveis para dentro da imagem. - Não armazene segredos na imagem. Use variáveis de ambiente, secret managers ou build secrets.
- Adote multi-stage build quando o build precisar de ferramentas que não devem ir para produção.
Docker e o restante do mundo DevOps
Docker raramente vive sozinho. Ele se conecta com praticamente todos os outros pilares de DevOps:
- CI/CD — containers como ambiente padronizado de build e como artefato final
- Kubernetes — orquestrador que gerencia centenas/milhares de containers em produção
- Infraestrutura como Código — provisionar a infra que vai rodar os containers
- Segurança em pipelines — scanners de imagem (Trivy, Docker Scout) integrados ao CI
- Platform Engineering — containers como base de plataformas internas
- FinOps — porque container rodando 24h sem necessidade também gera custo
Se está começando do zero, vale acompanhar o post DevOps para Iniciantes: Guia Rápido para Começar em 2026 para encaixar Docker na trilha completa.
Perguntas frequentes sobre Docker
Docker é a mesma coisa que máquina virtual?
Não. VM virtualiza hardware e carrega um SO completo. Docker virtualiza apenas o ambiente da aplicação, compartilhando o kernel do host. Por isso containers são muito mais leves e rápidos.
Preciso de Linux para usar Docker?
Não. Docker Desktop roda em macOS, Windows e Linux. Em macOS e Windows, ele sobe uma pequena VM Linux por baixo automaticamente.
Docker é gratuito?
O Docker Engine e o Docker CLI são open source e gratuitos. O Docker Desktop é gratuito para uso pessoal, educação e pequenas empresas; empresas grandes precisam de licença comercial. Vale conferir o modelo de pricing atual antes de adotar em escala.
Qual a diferença entre Docker e Kubernetes?
Docker é a tecnologia de container — empacota e roda containers. Kubernetes é o orquestrador — gerencia centenas ou milhares de containers em vários servidores, com auto-scaling, healing e deploys controlados. Os dois trabalham juntos, não competem.
Devo aprender Docker antes de Kubernetes?
Sim, sem dúvida. Kubernetes assume que você já entende imagens, containers, redes e volumes. Tente pular Docker e a curva de Kubernetes vira um muro.
Docker substitui linguagens de programação?
Não. Docker não substitui nada. Ele é uma camada de empacotamento e execução. Você continua escrevendo código em Node, Python, Go, Java etc. — Docker apenas embala isso para rodar de forma portátil.
Conclusão
Docker é uma das tecnologias mais transformadoras dos últimos 10 anos. Quem está começando em DevOps não pode pular essa etapa: dominar Docker é pré-requisito para entender CI/CD moderno, Kubernetes, microsserviços e deploys em nuvem.
A boa notícia é que dá para começar pequeno: instale o Docker Desktop, rode docker run hello-world e parta para containerizar uma aplicação sua ainda esta semana. Os ganhos aparecem rápido — em produtividade, padronização e em quanto você consegue evoluir nos próximos passos da carreira.
Nos próximos posts, vamos aprofundar em Docker Compose para projetos reais, boas práticas de Dockerfile em produção e integração de Docker com pipelines de CI/CD.
Quer aprender Docker e DevOps na prática, com pipelines reais e exemplos de mercado? Acesse: DevOps Automação Sem Enrolação
Referências oficiais:
- Docker Docs — What is Docker: https://docs.docker.com/get-started/docker-overview/
- Docker — What is a Container: https://www.docker.com/resources/what-container/
- Docker Hub — Registro público de imagens: https://hub.docker.com
- Open Container Initiative (OCI): https://opencontainers.org