Docker é uma plataforma para criar, distribuir e executar aplicações em contêineres. O contêiner reúne o código, as dependências e as configurações necessárias para a aplicação funcionar de maneira previsível em diferentes ambientes.
Na prática, o Docker ajuda a reduzir problemas como “funciona no meu computador, mas não funciona no servidor”. A equipe pode trabalhar com a mesma imagem no desenvolvimento, nos testes e na implantação.
Resposta rápida: Docker serve para empacotar aplicações, isolar serviços, padronizar ambientes e automatizar partes do desenvolvimento e da entrega de software. Uma imagem é o modelo imutável; um contêiner é uma instância executável dessa imagem.
O que é Docker?
O Docker é uma plataforma aberta que trabalha com virtualização no nível do sistema operacional. Em vez de preparar manualmente cada servidor, você descreve o ambiente da aplicação e o transforma em uma imagem reutilizável.
Quando essa imagem é executada, o Docker cria um contêiner isolado com seus próprios processos, sistema de arquivos, rede e configurações. O contêiner continua usando recursos do sistema que o hospeda, por isso costuma ser mais leve do que iniciar um sistema operacional completo em uma máquina virtual.
Em Linux, contêineres Linux compartilham o kernel do ambiente hospedeiro. No Windows e no macOS, o Docker Desktop fornece o ambiente de virtualização necessário para executar contêineres Linux com uma experiência semelhante.
Para que serve o Docker?
- Padronizar ambientes: todos usam as mesmas versões de runtime, bibliotecas e ferramentas.
- Isolar dependências: projetos com versões diferentes de Node.js, Python, PHP ou bancos de dados podem coexistir.
- Executar serviços locais: bancos de dados, filas, caches e servidores podem ser iniciados sem uma instalação tradicional.
- Automatizar testes e entregas: a mesma imagem pode ser utilizada em pipelines de integração e implantação contínua.
- Distribuir aplicações: imagens podem ser enviadas para um registro e executadas em servidores ou serviços de nuvem compatíveis.
- Separar componentes: uma aplicação pode ter contêineres distintos para frontend, API, banco de dados e cache.
Esse modelo é especialmente útil em desenvolvimento web, APIs, microserviços, testes automatizados e ambientes de estudo.
Como o Docker funciona?
O fluxo básico pode ser resumido em quatro etapas:
- Você descreve como preparar a aplicação em um arquivo chamado
Dockerfile. - O comando
docker buildlê o Dockerfile e cria uma imagem. - A imagem pode ficar no computador ou ser publicada em um registro, como o Docker Hub.
- O comando
docker runcria e inicia um contêiner baseado na imagem.
Dockerfile → build → imagem → run → contêiner
Imagem e contêiner são a mesma coisa?
Não. Essa é a distinção mais importante para quem está começando.
| Conceito | O que significa | Exemplo |
|---|---|---|
| Imagem | Pacote somente para leitura que contém arquivos, bibliotecas, configurações e instruções | nginx:alpine |
| Contêiner | Instância criada e executada a partir de uma imagem | Um servidor NGINX em execução |
| Registro | Serviço que armazena e distribui imagens | Docker Hub |
| Dockerfile | Arquivo com instruções para construir uma imagem | FROM, COPY e CMD |
Uma única imagem pode originar vários contêineres. É parecido com usar a mesma classe para criar diferentes objetos, embora cada contêiner tenha seu próprio estado durante a execução.
Principais componentes do Docker
- Docker Engine: conjunto principal que cria e executa contêineres.
- Docker daemon: processo
dockerdque gerencia imagens, contêineres, redes e volumes. - Docker CLI: comando
dockerusado no terminal para conversar com o daemon. - Docker Desktop: aplicativo para Windows, macOS e Linux que reúne Engine, CLI, Compose e uma interface gráfica.
- Docker Hub: registro público de imagens. Também existem registros privados e alternativas de outros fornecedores.
- Docker Compose: ferramenta para definir e iniciar aplicações com um ou mais contêineres por meio de um arquivo YAML.
Primeiro exemplo: executar um servidor NGINX
Depois de instalar o Docker, abra o terminal e execute:
docker run --name meu-nginx -d -p 8080:80 nginx:alpineAbra http://localhost:8080 no navegador. A página padrão do NGINX deve aparecer.
| Parte do comando | Função |
|---|---|
docker run | Cria e inicia um contêiner |
--name meu-nginx | Define um nome fácil de identificar |
-d | Executa em segundo plano |
-p 8080:80 | Liga a porta 8080 do computador à porta 80 do contêiner |
nginx:alpine | Imagem e tag usadas para criar o contêiner |
Alguns comandos úteis para acompanhar e remover o exemplo:
docker ps
docker logs meu-nginx
docker stop meu-nginx
docker rm meu-nginxComo criar uma imagem com Dockerfile
Crie uma pasta com um arquivo index.html e outro arquivo chamado apenas Dockerfile, sem extensão.
Use este conteúdo no Dockerfile:
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.htmlNa mesma pasta, construa a imagem e execute o site:
docker build -t meu-site .
docker run --name site-local -d -p 8080:80 meu-siteO ponto no final de docker build representa o contexto de construção, ou seja, a pasta cujos arquivos podem ser usados pelo Dockerfile.
O que é Docker Compose?
O Docker Compose permite registrar serviços, portas, volumes, redes e outras configurações em um arquivo compose.yaml. Isso evita repetir vários comandos longos e facilita compartilhar o ambiente com a equipe.
Exemplo com um servidor web e um Redis:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
cache:
image: redis:alpinePara iniciar e encerrar os serviços:
docker compose up -d
docker compose downO Dockerfile e o arquivo Compose têm funções diferentes. O Dockerfile ensina como construir uma imagem; o Compose descreve quais contêineres devem ser executados e como eles se relacionam.
Volumes e persistência de dados
O sistema de arquivos gravável de um contêiner é temporário. Quando o contêiner é removido, alterações que não foram armazenadas fora dele também desaparecem.
Volumes resolvem esse problema. Eles têm um ciclo de vida separado e são indicados para bancos de dados, arquivos enviados por usuários e outros dados que precisam continuar existindo.
docker volume create dados
docker run -d --name banco -e POSTGRES_PASSWORD=senha-local -v dados:/var/lib/postgresql/data postgres:alpineA senha acima serve apenas para um teste local. Em projetos reais, não coloque credenciais diretamente em arquivos versionados ou comandos compartilhados.
Docker e máquina virtual: qual é a diferença?
| Característica | Contêiner Docker | Máquina virtual |
|---|---|---|
| Tipo de virtualização | Nível do sistema operacional | Hardware virtualizado |
| Sistema operacional | Compartilha o kernel do ambiente hospedeiro | Executa um sistema convidado com kernel próprio |
| Inicialização | Geralmente rápida | Normalmente mais demorada |
| Consumo de recursos | Menor na maioria dos cenários | Maior por incluir um sistema completo |
| Isolamento | Isolamento de processos e recursos | Fronteira de virtualização mais completa |
| Uso comum | Aplicações, serviços, testes e pipelines | Sistemas completos, kernels diferentes e cargas legadas |
Docker não elimina a utilidade das máquinas virtuais. Em muitos ambientes, os próprios contêineres são executados dentro de VMs. A escolha depende do nível de isolamento, do sistema operacional necessário e da infraestrutura disponível.
Docker, Docker Compose e Kubernetes
| Ferramenta | Responsabilidade principal |
|---|---|
| Docker | Construir imagens e executar contêineres |
| Docker Compose | Definir e iniciar vários serviços, principalmente em desenvolvimento e ambientes menores |
| Kubernetes | Orquestrar aplicações conteinerizadas em clusters, com escalonamento, atualização e recuperação |
Para aprofundar essa comparação, leia também o que é Kubernetes. Docker e Kubernetes não são concorrentes diretos em todas as situações, pois atuam em partes diferentes do ciclo da aplicação.
Benefícios do Docker
- ambientes reproduzíveis e fáceis de compartilhar;
- instalação rápida de bancos e serviços auxiliares;
- isolamento entre dependências de projetos;
- integração com testes e pipelines de CI/CD;
- possibilidade de criar imagens versionadas;
- facilidade para substituir e replicar instâncias da aplicação.
Um uso comum é construir a imagem durante um fluxo de deploy com GitHub Actions, executar testes e publicar a versão aprovada em um registro.
Limitações e cuidados importantes
- Contêiner não é uma VM: ele não oferece exatamente a mesma fronteira de isolamento de um sistema operacional virtualizado.
- Dados precisam de estratégia: bancos e arquivos importantes devem usar volumes, backups e políticas de recuperação.
- Imagens exigem manutenção: dependências e imagens-base precisam ser atualizadas e verificadas.
- Segredos não pertencem à imagem: senhas, tokens e chaves não devem ser gravados no Dockerfile.
- Rede e observabilidade podem ficar complexas: muitos serviços exigem logs, métricas e ferramentas de orquestração.
- Evite executar como root quando não for necessário: reduza permissões e a superfície de ataque.
Docker é gratuito?
É preciso separar Docker Engine de Docker Desktop. Os projetos abertos, incluindo o Docker Engine, mantêm suas próprias licenças de código aberto.
O Docker Desktop é gratuito para uso pessoal, educação, projetos de código aberto não comerciais e pequenas empresas dentro dos limites definidos pela Docker. Organizações maiores, entidades governamentais e usos comerciais fora da faixa gratuita precisam verificar a assinatura aplicável.
Quando vale a pena usar Docker?
Docker costuma ser uma boa escolha quando você precisa repetir o mesmo ambiente em várias máquinas, trabalhar em equipe, executar dependências locais, automatizar testes ou distribuir uma aplicação com configurações previsíveis.
Ele pode ser desnecessário para um script muito pequeno que roda apenas em uma máquina e não possui dependências complexas. Também não substitui automaticamente uma máquina virtual quando a aplicação precisa de outro kernel, de um sistema operacional completo ou de uma separação de segurança mais rígida.
Perguntas frequentes
Docker e contêiner são a mesma coisa?
Não. Docker é a plataforma e o conjunto de ferramentas. O contêiner é o ambiente isolado criado e gerenciado por essas ferramentas.
Qual é a diferença entre imagem e contêiner?
A imagem é um modelo imutável. O contêiner é uma instância executável criada a partir dela.
Preciso saber Linux para usar Docker?
Não é obrigatório para começar, especialmente com Docker Desktop. Conhecimentos básicos de terminal, permissões, processos e sistema de arquivos ajudam bastante conforme os projetos ficam mais avançados.
Docker pode ser usado em produção?
Sim. O ambiente precisa incluir práticas adequadas de segurança, atualização de imagens, persistência, monitoramento, logs, limites de recursos e recuperação de falhas.
O que é um Dockerfile?
É um arquivo de texto com instruções usadas pelo Docker para construir uma imagem, como definir a imagem-base, copiar arquivos, instalar dependências e escolher o comando inicial.
O que acontece com os dados quando um contêiner é removido?
Alterações gravadas apenas na camada do contêiner são perdidas. Para manter os dados, utilize volumes ou outro armazenamento externo.
Como verificamos as informações
- documentação oficial de visão geral e arquitetura do Docker;
- documentação oficial sobre imagens, contêineres e Dockerfile;
- documentação oficial sobre Docker Compose e volumes;
- termos atuais de licenciamento do Docker Desktop;
- informações revisadas em 14 de julho de 2026.
Fontes: visão geral do Docker, imagens, contêineres, Docker Compose e licença do Docker Desktop.
Conclusão
Docker é uma forma prática de transformar a configuração de uma aplicação em um ambiente reproduzível. O Dockerfile constrói a imagem, a imagem origina contêineres e o Docker Compose organiza os serviços que formam a aplicação.
Para começar, execute uma imagem pronta, crie um Dockerfile simples e depois experimente volumes e Compose. Essa sequência ajuda a entender os conceitos antes de avançar para redes, segurança, pipelines e orquestração.




