O que é Docker? Containers explicados do zero para desenvolvedores e times de TI

Se você já ouviu a frase “funciona na minha máquina” e sabe a dor que ela causa, o Docker foi criado para eliminar exatamente esse problema. Com containers, a aplicação e tudo que ela precisa para rodar — dependências, configurações, versões de bibliotecas — viajam juntos em um pacote padronizado que funciona igual em qualquer ambiente: desenvolvimento, staging ou produção.

Neste guia você vai entender o que é Docker, como ele funciona, a diferença entre containers e máquinas virtuais, os comandos essenciais e como ele se encaixa em uma arquitetura moderna de software.

Docker em 30 segundos (resumo rápido)

  • O que é: plataforma de containerização que empacota aplicações e suas dependências em containers isolados e portáteis.
  • Problema que resolve: incompatibilidades de ambiente entre desenvolvimento, staging e produção — o famoso “funciona na minha máquina”.
  • Conceitos-chave: imagem (template), container (instância em execução), Dockerfile (receita), Docker Hub (repositório de imagens), Docker Compose (orquestração local).
  • Onde é usado: deploy de aplicações web, microsserviços, pipelines de CI/CD, ambientes de desenvolvimento padronizados.

O que é Docker?

Docker é uma plataforma open source que permite criar, distribuir e executar aplicações em containers. Um container é um ambiente isolado e leve que contém tudo que uma aplicação precisa para funcionar — código, runtime, bibliotecas, variáveis de ambiente e configurações — sem depender do sistema operacional do host para além do kernel Linux.

Lançado em 2013 pela empresa Docker Inc. (originalmente dotCloud), o Docker democratizou a containerização — tecnologia que existe no Linux desde os anos 2000 (LXC, cgroups, namespaces) mas que era complexa de usar diretamente. O Docker criou uma interface simples e padronizada que transformou a forma como software é desenvolvido e implantado.

Container vs. Máquina Virtual: qual a diferença?

Essa é a pergunta mais comum de quem está começando com Docker. As duas tecnologias isolam ambientes, mas de formas fundamentalmente diferentes:

CritérioContainer DockerMáquina Virtual (VM)
IsolamentoProcesso isolado — compartilha o kernel do hostSistema operacional completo isolado
TamanhoMegabytes (imagens leves)Gigabytes (SO completo)
Tempo de inicializaçãoMilissegundos a segundosDezenas de segundos a minutos
Overhead de recursosMínimoSignificativo (hypervisor + SO)
PortabilidadeAlta — roda igual em qualquer host Linux/DockerModerada — depende do hypervisor
Isolamento de segurançaModerado (compartilha kernel)Alto (SO completamente separado)

Na prática, containers e VMs são complementares: muitas empresas rodam containers dentro de VMs — a VM fornece o isolamento do hardware, o container fornece a padronização do ambiente da aplicação.

Conceitos fundamentais do Docker

Imagem Docker

Uma imagem é um template imutável e em camadas que define o que estará dentro do container. É como uma “fotografia” do ambiente da aplicação. Imagens são construídas a partir de um Dockerfile e armazenadas localmente ou em registries como o Docker Hub.

Container

Um container é uma instância em execução de uma imagem. Você pode criar dezenas de containers a partir da mesma imagem — cada um isolado, com seu próprio processo, sistema de arquivos e rede. Containers são efêmeros: quando parados e removidos, não deixam rastros.

Dockerfile

O Dockerfile é o arquivo de texto com as instruções para construir uma imagem. Exemplo básico para uma aplicação Node.js:

FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Docker Hub

Registry público de imagens Docker — o equivalente ao GitHub para imagens de containers. Você encontra imagens oficiais de praticamente qualquer tecnologia: nginx, postgres, redis, python, node, mysql e centenas de outras. Usar imagens oficiais é a forma mais rápida de começar.

Docker Compose

Ferramenta para definir e executar aplicações multi-container. Com um único arquivo docker-compose.yml, você sobe toda a stack da aplicação — aplicação web, banco de dados, cache, fila — com um único comando: docker compose up.

Comandos Docker essenciais

ComandoO que faz
docker pull nginxBaixa a imagem do nginx do Docker Hub
docker run -p 80:80 nginxCria e inicia um container nginx mapeando a porta 80
docker psLista containers em execução
docker ps -aLista todos os containers (incluindo parados)
docker stop [id]Para um container gracefully
docker rm [id]Remove um container parado
docker imagesLista imagens locais
docker build -t minha-app .Constrói imagem a partir do Dockerfile no diretório atual
docker exec -it [id] bashAbre terminal interativo dentro de um container
docker logs [id]Exibe os logs de um container

Docker Compose na prática

Exemplo de docker-compose.yml para uma aplicação web com banco de dados PostgreSQL:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://user:password@db:5432/mydb
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Com esse arquivo, docker compose up -d sobe toda a stack em segundos.

Por que times de desenvolvimento adoram Docker: novos membros do time clonam o repositório, rodam docker compose up e têm o ambiente de desenvolvimento idêntico ao dos colegas em minutos — sem horas de configuração manual, sem conflitos de versão, sem “funciona na minha máquina”.

Docker em produção: Kubernetes e além

Para produção com múltiplos containers, alta disponibilidade e escalabilidade, o Docker sozinho não é suficiente — entra o Kubernetes (K8s), o orquestrador de containers mais adotado do mundo. O Kubernetes gerencia o ciclo de vida dos containers em clusters de servidores, incluindo: escalonamento automático, balanceamento de carga, rollouts sem downtime e recuperação automática de falhas.

Para quem está começando ou tem operações menores, alternativas mais simples ao Kubernetes incluem Docker Swarm (nativo no Docker), Portainer (interface gráfica para gerenciar containers) e plataformas como Railway, Render e Fly.io que abstraem toda a orquestração.

Perguntas frequentes sobre Docker

Docker roda no Windows e macOS?

Sim. O Docker Desktop está disponível para Windows e macOS. No Windows, ele usa o WSL 2 (Windows Subsystem for Linux) como backend. No macOS, usa uma VM Linux leve. A experiência é praticamente idêntica ao Linux, embora com algum overhead adicional por conta da camada de virtualização.

Posso usar Docker para banco de dados em produção?

É possível, mas requer atenção extra à persistência de dados (volumes) e backup. Muitas equipes preferem usar bancos de dados gerenciados (RDS, Cloud SQL, Neon) em produção e Docker apenas para desenvolvimento e testes, onde a persistência não é crítica.

Docker é gratuito?

O Docker Engine (versão CLI, open source) é gratuito para todos os usos. O Docker Desktop é gratuito para uso pessoal e em pequenas empresas (menos de 250 funcionários e receita menor que US$ 10M). Empresas maiores precisam de licença paga. O Docker Hub tem plano gratuito com pulls limitados e planos pagos para uso intenso.

Qual a diferença entre Docker e Podman?

Podman é uma alternativa open source ao Docker desenvolvida pela Red Hat. A principal diferença é que o Podman é “daemonless” (não precisa de um processo daemon rodando como root) e é compatível com a maioria dos comandos Docker. É a opção preferida em ambientes corporativos com requisitos de segurança mais rígidos, especialmente no ecossistema RHEL/CentOS.

Docker é necessário para aprender Kubernetes?

Ter familiaridade com containers e Docker é altamente recomendado antes de aprender Kubernetes. O Kubernetes orquestra containers — entender como um container funciona, como construir imagens e como configurar aplicações multi-container é a base necessária para trabalhar com K8s de forma eficiente.

Conclusão

Docker se tornou uma das ferramentas mais fundamentais do desenvolvimento e operações de software moderno. Seja para padronizar ambientes de desenvolvimento, simplificar deploys ou construir arquiteturas de microsserviços, entender Docker é hoje uma habilidade essencial para desenvolvedores, engenheiros de DevOps e administradores de sistemas. O melhor jeito de aprender é praticando: instale o Docker, rode os primeiros containers e construa sua primeira imagem.

Confira mais conteúdos sobre tecnologia e infraestrutura no Atraca para continuar sua jornada no universo DevOps.

Perguntas frequentes sobre Docker (FAQ)

O que é Docker?

Docker é uma plataforma de containerização que permite empacotar aplicações com todas as suas dependências em containers isolados e portáteis, garantindo que funcionem de forma consistente em qualquer ambiente.

Qual a diferença entre Docker e máquina virtual?

Máquinas virtuais emulam hardware completo e têm sistema operacional próprio, consumindo mais recursos. Containers Docker compartilham o kernel do SO host, são muito mais leves, iniciam em segundos e usam menos memória e disco.

Docker é difícil de aprender?

Os conceitos básicos (imagens, containers, volumes, redes) podem ser aprendidos em alguns dias. Para uso em produção com Docker Compose e orquestração (Kubernetes), o aprendizado é gradual e mais demorado.

Docker funciona no Windows?

Sim. O Docker Desktop para Windows usa WSL 2 (Windows Subsystem for Linux) para rodar containers Linux nativamente. Para containers Windows, usa o Hyper-V. O Docker Desktop também está disponível para macOS.

Docker e Kubernetes são a mesma coisa?

Não. Docker cria e executa containers individuais. Kubernetes é um orquestrador que gerencia clusters de containers em escala, automatizando deploy, escalabilidade e recuperação de falhas em ambientes de produção complexos.