"Na minha máquina funciona." Poucas frases geraram tantos atritos entre desenvolvedores e equipes de infraestrutura. O Docker nasceu justamente para acabar com esse problema. Hoje, ele é a base de pipelines de CI/CD, de ambientes em nuvem e do Kubernetes. Neste guia, explicamos o que é Docker, como ele funciona e como começar a usá-lo.
O que é Docker
Docker é uma plataforma para criar, distribuir e executar aplicações em contêineres. Um contêiner empacota o código junto com tudo o que ele precisa para rodar: bibliotecas, dependências, configurações e a versão exata da linguagem.
Dessa forma, a aplicação se comporta igual no notebook do desenvolvedor, no servidor de testes e em produção.
Contêiner ou máquina virtual?
Os dois isolam aplicações, mas de formas diferentes:
- Máquina virtual: emula um computador inteiro, com sistema operacional completo. É pesada, ocupa gigabytes e leva minutos para iniciar.
- Contêiner: compartilha o kernel do sistema hospedeiro e isola apenas o processo. É leve, ocupa megabytes e inicia em segundos.
Por isso, um único servidor consegue rodar dezenas de contêineres no lugar de poucas máquinas virtuais.
Conceitos fundamentais
Imagem
A imagem é um modelo somente leitura que contém a aplicação e suas dependências. Ela funciona como uma receita.
Contêiner
O contêiner é uma instância em execução de uma imagem. A partir de uma única imagem, você pode iniciar vários contêineres idênticos.
Dockerfile
É o arquivo de texto com as instruções para construir a imagem. Um exemplo simples para uma aplicação Node.js:
FROM node:22-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --omit=dev COPY . . CMD ["node", "server.js"]
Registry
É o repositório onde as imagens ficam armazenadas, como o Docker Hub, o GitHub Container Registry ou o Amazon ECR.
Docker Compose
Permite descrever vários serviços em um único arquivo YAML. Com um comando, você sobe a aplicação, o banco de dados e o Redis juntos. É ideal para ambientes de desenvolvimento.
Comandos básicos
docker build -t minha-app .: constrói uma imagem a partir do Dockerfile.docker run -p 8080:80 minha-app: inicia um contêiner e expõe a porta.docker ps: lista os contêineres em execução.docker logs -f nome: acompanha os logs de um contêiner.docker compose up -d: sobe todos os serviços definidos no Compose.
Vantagens do Docker
- Consistência: o mesmo ambiente do desenvolvimento à produção.
- Onboarding rápido: um novo desenvolvedor sobe o projeto com um único comando.
- Deploys previsíveis: você publica uma imagem testada, e não um conjunto de passos manuais.
- Escalabilidade: orquestradores como Kubernetes e ECS iniciam novas réplicas em segundos.
- Isolamento: projetos com versões diferentes de PHP, Node ou Python convivem no mesmo servidor.
Boas práticas para produção
- Use imagens base oficiais e enxutas, como as variantes alpine ou slim.
- Aplique multi-stage builds para separar a compilação da imagem final.
- Não rode processos como root dentro do contêiner.
- Nunca coloque senhas e chaves na imagem. Em vez disso, use variáveis de ambiente ou um cofre de segredos.
- Fixe versões das imagens base e verifique vulnerabilidades com ferramentas como Trivy.
- Guarde dados persistentes em volumes, já que o contêiner pode ser destruído a qualquer momento.
Perguntas frequentes
Docker e Kubernetes são concorrentes?
Não. O Docker cria e executa contêineres. O Kubernetes orquestra muitos contêineres em vários servidores, cuidando de escala, rede e recuperação de falhas.
Docker funciona no Windows?
Sim. O Docker Desktop usa o WSL 2 para rodar contêineres Linux no Windows com bom desempenho.
Conclusão
Entender o que é Docker é o primeiro passo para modernizar a forma como uma empresa desenvolve e publica software. Contêineres trazem consistência, velocidade e escalabilidade. Se você quer containerizar seus sistemas ou montar um pipeline de deploy automatizado, a WDS Developer pode ajudar.
