Pular para o conteúdo
sistema ativo 135 arquivos build 20261111-150201 gerado estaticamente
Agatetepe
Desenvolvimento de SoftwareARQ-2026-1111-1735

O que é Docker? Para que serve e como usar (guia para iniciantes)

Entenda o que é Docker, como funcionam imagens e containers, a diferença para VMs e aprenda a instalar e dar os primeiros comandos. Guia para iniciantes.

Autor
Gabrielly Vizzotto Cruz
Publicado
Leitura
16 min
Palavras
3.231
Compartilhar
Baleia Docker no espaço tech com sua xícara de café

Se você já trabalhou com desenvolvimento (ou só conviveu com alguém que trabalha), com certeza já ouviu a frase mais famosa da área: "Mas na minha máquina funciona!" O sistema roda lindo no notebook do dev, mas quebra no servidor, no computador do colega ou no ambiente de testes. Culpa de uma versão diferente de biblioteca aqui, de uma configuração esquecida ali...

O Docker nasceu justamente para acabar com essa novela. E hoje ele é praticamente obrigatório no currículo de quem trabalha com software, DevOps ou infraestrutura.

Neste guia, você vai entender o que é Docker, como ele funciona, qual a diferença entre container e máquina virtual, para que ele serve no dia a dia e como dar os primeiros passos. Tudo sem enrolação (e sem precisar ser engenheiro de infraestrutura para acompanhar).

O que é Docker?

Docker é uma plataforma aberta para desenvolver, distribuir e executar aplicações dentro de containers. Na prática, ele empacota o seu sistema junto com tudo o que ele precisa para rodar (código, bibliotecas, dependências e configurações) em um ambiente isolado e leve.

Segundo a documentação oficial do Docker, a ideia é separar a aplicação da infraestrutura. Assim, o container funciona do mesmo jeito no seu notebook, no servidor da empresa ou na nuvem, e o tempo entre escrever o código e colocá-lo em produção cai bastante.

A analogia do contêiner de navio

Logo do Docker ao lado de um navio cargueiro carregado de contêineres

O nome e o logo (uma baleia carregando caixinhas) não são por acaso. Antes dos contêineres padronizados, cada carga era embarcada de um jeito: sacos, barris, caixas de tamanhos diferentes. Era lento e caótico.

Com o contêiner de tamanho padrão, tanto faz se dentro dele tem café, eletrônicos ou roupas: qualquer navio, guindaste ou caminhão sabe carregá-lo. O Docker faz a mesma coisa com software. Não importa a linguagem de programação da aplicação (Python, Node.js, Java ou PHP): empacotada em um container, ela roda em qualquer máquina que tenha Docker instalado.

De onde veio o Docker?

Tudo começou em 2013, na PyCon, a conferência de Python, nos Estados Unidos. Foi lá que Solomon Hykes subiu ao palco e mostrou o Docker para o mundo pela primeira vez. O problema que ele queria resolver cabia em uma frase: levar código até o servidor é difícil. Quem já viu um deploy dar errado por causa de uma dependência diferente sabe bem do que ele estava falando.

O Docker não inventou tudo do zero. Segundo o blog oficial do Docker, ele foi construído "nos ombros de gigantes": recursos do kernel Linux, sistemas de arquivos copy-on-write (que só gravam o que mudou) e a lógica amigável do Git. A grande sacada foi juntar tudo isso em um formato padronizado e aberto, que dividiu bem as tarefas:

  • Quem desenvolve cuida do que está dentro do container: a aplicação e suas dependências.
  • Quem opera a infraestrutura cuida do que está fora: colocar qualquer aplicação para rodar em qualquer lugar, sempre no mesmo formato.

Essa separação diminuiu muito o atrito entre os times de desenvolvimento e de operações. Ela também acelerou o ciclo de escrever, testar e corrigir código. De acordo com o próprio Docker, equipes que trabalham assim chegam a lançar atualizações com frequência 13 vezes maior.

O tamanho do Docker

O projeto nasceu dentro da dotCloud, empresa de Hykes, e fez tanto sucesso que a companhia virou Docker, Inc. ainda em 2013. Em pouco mais de uma década, os números ficaram gigantes. No aniversário de 11 anos, em março de 2024, o Docker divulgou estes dados:

Indicador Número (março de 2024)
Desenvolvedores registrados 17 milhões
Repositórios no Docker Hub 15 milhões
Downloads (pulls) de imagens por mês 25 bilhões
Clientes Mais de 79 mil
Contribuidores do projeto open source Moby Mais de 2.200

Além disso, o Docker foi eleito por quatro anos seguidos a ferramenta mais desejada pelos desenvolvedores na pesquisa do Stack Overflow. Nada mal para algo que começou em uma apresentação de conferência, né?

Como o Docker funciona?

Para entender o Docker de verdade, você precisa conhecer cinco peças. Calma, é mais simples do que parece.

Dockerfile: a receita

O Dockerfile é um arquivo de texto com o passo a passo para montar o ambiente da aplicação: qual sistema base usar, quais pacotes instalar, quais arquivos copiar e qual comando executar no final. Cada instrução vira uma camada da imagem. Quando você muda algo, só as camadas alteradas são reconstruídas, o que deixa tudo mais rápido.

Imagem: o molde

A imagem é o resultado da receita: um modelo somente leitura com tudo o que a aplicação precisa. Pense nela como a forma de bolo. Normalmente, uma imagem é criada a partir de outra (por exemplo, uma imagem do Ubuntu com o servidor web Apache e o seu sistema por cima).

Container: o bolo pronto

O container é uma instância em execução de uma imagem. A partir do mesmo molde, você pode criar, iniciar, parar e apagar quantos containers quiser. Um detalhe importante: quando um container é removido, tudo o que não foi salvo em armazenamento persistente (os chamados volumes) some junto.

Registry e Docker Hub: a prateleira

O registry é onde as imagens ficam guardadas e são compartilhadas. O mais conhecido é o Docker Hub, um registro público que o Docker consulta por padrão. É lá que você encontra imagens prontas de MySQL, Nginx, Node.js, Python e milhares de outras. Também dá para ter um registry privado da empresa.

Docker Engine: quem faz o trabalho pesado

O Docker funciona no modelo cliente-servidor:

  • Cliente (docker): é o comando que você digita no terminal, como docker run.
  • Daemon (dockerd): é o serviço que recebe esses comandos e realmente constrói, executa e distribui os containers.

Por baixo dos panos, o Docker é escrito em Go e usa recursos do próprio kernel do Linux, como os namespaces e os cgroups, para isolar cada container e limitar quanto de CPU e memória ele pode usar. Cada container enxerga apenas o seu próprio "pedaço" do sistema.

Resumindo o fluxo

  1. Você escreve um Dockerfile.
  2. Roda docker build e gera uma imagem.
  3. Envia a imagem para um registry (como o Docker Hub) com docker push, se quiser compartilhar.
  4. Em qualquer máquina, executa docker run e sobe um container a partir dessa imagem.

Fluxo do Docker: o Dockerfile gera a imagem com docker build, que é enviada ao registry e vira container com docker run

Docker x máquina virtual: qual a diferença?

Essa é a dúvida número um de quem está começando. Os dois isolam aplicações, mas de jeitos bem diferentes.

Uma máquina virtual (VM) simula um computador inteiro: tem hardware virtualizado e um sistema operacional completo próprio, gerenciados por um hypervisor (como VirtualBox, VMware ou Hyper-V). Já o container compartilha o kernel do sistema da máquina hospedeira e isola só a aplicação e suas dependências.

Resultado: o container é muito mais leve. Enquanto uma VM precisa "ligar" um sistema operacional inteiro, o container sobe em segundos.

Comparação entre containers, que compartilham o kernel do host, e máquinas virtuais, que têm sistema operacional próprio

Critério Container (Docker) Máquina virtual
O que virtualiza O sistema operacional (isola processos) O hardware
Sistema operacional Compartilha o kernel do host Cada VM tem o seu SO completo
Tamanho Megabytes Gigabytes
Tempo para iniciar Segundos (ou menos) Minutos
Consumo de recursos Baixo Alto
Isolamento Bom, mas compartilha o kernel Mais forte, cada VM é independente
Ideal para Microsserviços, CI/CD, ambientes de desenvolvimento Rodar outro SO, sistemas legados, isolamento máximo

E não precisa escolher um lado: é muito comum rodar containers dentro de máquinas virtuais, principalmente na nuvem. Inclusive, no Windows e no macOS, o Docker Desktop usa uma VM leve por baixo dos panos para rodar containers Linux.

Para que serve o Docker? Principais vantagens

O Docker está presente em praticamente todas as etapas da vida de um software, do primeiro git clone até a produção. Estas são as vantagens que o fizeram virar padrão de mercado:

  1. Fim do "na minha máquina funciona": o ambiente vai junto com a aplicação. Se roda no container do dev, roda no servidor.
  2. Portabilidade: o mesmo container roda no notebook, em servidores físicos, em VMs ou em qualquer nuvem (AWS, Google Cloud, Azure...).
  3. Onboarding mais rápido: em vez de passar um dia instalando banco de dados, linguagem e dependências, a pessoa nova no time roda um comando e o projeto sobe.
  4. Integração com CI/CD: containers são perfeitos para pipelines de integração e entrega contínua. Testar, corrigir e publicar fica mais previsível.
  5. Escalabilidade: dá para subir ou derrubar várias cópias de um serviço quase em tempo real, conforme a demanda.
  6. Economia de recursos: por ser leve, o Docker permite rodar mais aplicações no mesmo servidor do que com máquinas virtuais.
  7. Testar sem medo: quer experimentar um banco de dados novo ou outra versão do Python? Sobe um container, testa e apaga. Seu sistema continua limpinho.

Exemplos de uso no dia a dia

  • Subir um PostgreSQL ou MySQL local para desenvolvimento em segundos.
  • Rodar uma aplicação dividida em microsserviços (API, front-end, fila, banco), cada um no seu container.
  • Padronizar ambientes de teste em pipelines do GitHub Actions ou GitLab CI.
  • Hospedar sistemas em plataformas de nuvem que aceitam containers, inclusive serviços de computação sem servidor.
  • Isolar ferramentas e agentes de IA em ambientes controlados (a própria documentação do Docker já tem tutorial sobre isso).

E as limitações?

Nem tudo são flores, claro:

  • Curva de aprendizado: conceitos como camadas, volumes e redes confundem no início.
  • Isolamento menor que o de uma VM: como os containers compartilham o kernel do host, uma vulnerabilidade no kernel ou uma configuração mal feita pode afetar todos eles.
  • Dados temporários: se você esquecer de configurar volumes, pode perder dados ao remover um container.
  • Muitos containers pedem orquestração: quando a aplicação cresce para dezenas ou centenas de containers, entra em cena uma ferramenta como o Kubernetes.

Como começar a usar o Docker

Bateu a vontade de colocar a mão na massa? Bora para o passo a passo.

1. Instale o Docker

O caminho mais fácil é o Docker Desktop, um aplicativo com interface gráfica que já vem com tudo: o daemon, o cliente de linha de comando, o Docker Compose e até um Kubernetes local. Ele está disponível para Windows, macOS e Linux na página oficial de instalação.

Como instalar o Docker no Windows

Antes de tudo, confira os requisitos oficiais: Windows 10 (versão 22H2) ou Windows 11 (versão 23H2 ou superior) de 64 bits, virtualização ativada na BIOS/UEFI, WSL 2 na versão 2.1.5 ou mais recente e pelo menos 8 GB de RAM. O Docker Desktop usa por padrão o WSL 2 (Subsistema do Windows para Linux) para rodar os containers.

  1. Baixe o instalador do Docker Desktop no site oficial.
  2. Execute o arquivo Docker Desktop Installer.exe. Se o WSL 2 ainda não estiver ativado, o próprio instalador pede para ativar.
  3. Reinicie o computador se for solicitado, abra o Docker Desktop pelo menu Iniciar e aceite os termos de uso.
  4. Abra o PowerShell ou o Prompt de Comando e rode docker --version para confirmar que deu tudo certo.

Como instalar o Docker no Ubuntu

No Linux, principalmente em servidores, o mais comum é instalar só o Docker Engine, sem interface gráfica. A documentação oficial recomenda usar o repositório apt do próprio Docker (evite o pacote docker.io das distribuições, que costuma ser não oficial e conflitar com a versão oficial).

Para testes e ambientes de desenvolvimento, existe um atalho: o script de conveniência oficial, que detecta sua distribuição e instala tudo sozinho.

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Só atenção: o próprio Docker não recomenda esse script para produção. Em servidor, siga o passo a passo do repositório oficial.

Logo após a instalação, os comandos docker só funcionam com sudo. Para usar sem sudo, adicione seu usuário ao grupo docker e depois saia e entre de novo na sessão:

sudo usermod -aG docker $USER

(Esse atalho tem uma implicação de segurança, que a gente explica no FAQ lá embaixo.)

2. Teste se está funcionando

Abra o terminal e rode:

docker run hello-world

Se aparecer uma mensagem de boas-vindas, parabéns: você acabou de baixar uma imagem do Docker Hub e rodar o seu primeiro container.

3. Aprenda os comandos básicos

Comando O que faz
docker pull nginx Baixa a imagem do Nginx do Docker Hub
docker run -d -p 8080:80 nginx Sobe um container do Nginx em segundo plano, acessível em localhost:8080
docker ps Lista os containers em execução (-a mostra todos)
docker images Lista as imagens baixadas
docker stop <id> Para um container
docker rm <id> Remove um container
docker build -t meu-app . Cria uma imagem a partir do Dockerfile da pasta atual
docker logs <id> Mostra os logs de um container

4. Crie seu primeiro Dockerfile

Imagine uma aplicação simples em Node.js. Um Dockerfile básico ficaria assim:

# Imagem base com Node.js
FROM node:24-alpine

# Pasta de trabalho dentro do container
WORKDIR /app

# Copia os arquivos de dependências e instala
COPY package*.json ./
RUN npm install

# Copia o restante do código
COPY . .

# Porta que a aplicação usa
EXPOSE 3000

# Comando para iniciar
CMD ["node", "index.js"]

Depois, é só construir a imagem e rodar:

docker build -t meu-app .
docker run -p 3000:3000 meu-app

Pronto: sua aplicação está rodando em um container e vai funcionar igualzinho em qualquer máquina com Docker.

Docker é gratuito?

Depende de qual parte do Docker você está falando (e do tamanho da sua empresa).

O Docker Engine, o motor que roda os containers, é open source e gratuito para qualquer pessoa. Já o Docker Desktop, o aplicativo com interface gráfica, tem regras de licença:

  • Gratuito para uso pessoal, educação, projetos open source não comerciais e pequenas empresas.
  • Pago para uso comercial em empresas com mais de 250 funcionários OU mais de US$ 10 milhões de faturamento anual, conforme os termos oficiais do Docker.

O plano gratuito se chama Personal. Os pagos são Pro, Team e Business, e incluem recursos extras como pulls ilimitados no Docker Hub (sujeitos a uso justo), análise de vulnerabilidades com o Docker Scout e gestão centralizada de equipes. No plano anual, os preços começam em US$ 9 por usuário/mês (Pro). Na cobrança mensal, o Pro sai por US$ 11, segundo a página oficial de preços do Docker. Como os valores mudam, vale conferir a tabela atualizada antes de assinar.

Resumindo: se você está estudando ou trabalha em uma empresa pequena, pode usar tudo sem pagar nada.

Conclusão

O Docker resolveu um problema antigo da tecnologia de um jeito simples: empacotar a aplicação com tudo o que ela precisa para rodar igual em qualquer lugar. Com Dockerfile, imagens, containers e o Docker Hub, ele virou peça central no desenvolvimento moderno, de projetos pessoais a grandes sistemas na nuvem.

Se você está começando, a dica é: instale o Docker Desktop, rode o hello-world, suba um banco de dados de teste e brinque com os comandos básicos. Em pouco tempo, você vai se perguntar como trabalhava sem ele.

E da próxima vez que alguém disser "mas na minha máquina funciona", você já sabe a resposta: então vamos mandar a sua máquina junto, dentro de um container. 🐳

Meme da baleia do Docker carregando um notebook, em referência ao problema "na minha máquina funciona"

Perguntas frequentes sobre Docker

Qual a diferença entre Docker e Kubernetes?

Eles não são concorrentes, são complementares. O Docker cria e roda containers. O Kubernetes é um orquestrador: gerencia muitos containers espalhados por vários servidores, cuidando de escalabilidade, balanceamento de carga e reinício automático quando algo cai.

Desde a versão 1.24, lançada em 2022, o Kubernetes removeu o dockershim, componente que permitia usar o Docker Engine diretamente como runtime nos servidores do cluster. Mas calma: as imagens criadas com docker build continuam funcionando normalmente em qualquer cluster, porque seguem um padrão aberto (OCI). Para quem usa Docker no computador para desenvolver, nada muda.

O que é Docker Compose?

É uma ferramenta para definir e rodar aplicações com vários containers de uma vez. Em vez de subir o banco, a API e o front-end um por um, você descreve tudo em um arquivo compose.yaml e roda docker compose up. Ele já vem incluído no Docker Desktop. Para se aprofundar, veja a documentação oficial do Docker Compose.

Docker é só para Linux?

Não. O Docker nasceu usando recursos do kernel Linux, mas o Docker Desktop roda no Windows e no macOS também. Nesses sistemas, ele usa uma máquina virtual leve nos bastidores para executar os containers Linux.

Container e imagem são a mesma coisa?

Não. A imagem é o modelo (somente leitura), e o container é a imagem em execução. Com uma única imagem, você pode subir vários containers iguais.

Existe alternativa ao Docker?

Sim. A mais conhecida é o Podman, criado pela Red Hat, que usa comandos bem parecidos. Também existem runtimes como o containerd, muito usado por baixo dos panos em clusters Kubernetes. Mesmo assim, o Docker continua sendo o ponto de partida mais popular para aprender containers.

Preciso saber programar para usar Docker?

Para o básico, não. Dá para subir um WordPress, um banco de dados ou outras ferramentas prontas do Docker Hub só com comandos. Mas, para criar suas próprias imagens, é bom ter noção de terminal e de como a aplicação funciona.

O Docker Hub tem limite de downloads?

Tem, e muita gente só descobre quando dá erro (toomanyrequests). Segundo a página oficial de limites do Docker Hub, a regra atual é:

Tipo de usuário Limite de pulls (downloads de imagem)
Sem login 100 a cada 6 horas, por endereço IP
Conta gratuita (Personal), com docker login 200 a cada 6 horas
Planos pagos (Pro, Team, Business) Sem limite, sujeito a uso justo

A dica de ouro: em rede de empresa, faculdade ou pipeline de CI, todo mundo pode estar saindo pelo mesmo IP e dividindo os mesmos 100 pulls. Fazer login com docker login já dobra o limite e passa a contar por conta, não por IP. A conta gratuita também permite apenas 1 repositório privado.

Obs.: o Docker já mudou esses números algumas vezes, então vale conferir antes de configurar um pipeline.

O Docker ocupa muito espaço? Como liberar?

Ocupa, se você não fizer uma faxina de vez em quando. Imagens antigas, containers parados e cache de build vão se acumulando em silêncio. Para ver quanto espaço o Docker está usando:

docker system df

E para limpar containers parados, redes sem uso, imagens órfãs e cache de build:

docker system prune

Com -a, ele remove também todas as imagens que não estão em uso por nenhum container. Os volumes ficam fora da faxina por padrão: com --volumes, o comando apaga os volumes anônimos sem uso, e os volumes nomeados continuam lá. Cuidado: tudo isso é apagado de verdade, sem lixeira.

Docker deixa o computador lento?

Pode pesar em máquinas mais modestas, principalmente no Windows e no macOS, onde o Docker Desktop roda uma VM leve por baixo. Por isso, a documentação oficial pede pelo menos 8 GB de RAM no Windows. Algumas dicas para aliviar:

  • Pare os containers que você não está usando (docker stop).
  • Feche o Docker Desktop quando não estiver programando.
  • Ajuste os limites de CPU e memória nas configurações do Docker Desktop.

Usar Docker é seguro?

Os containers são isolados, mas não são uma caixa-forte. O ponto que quase ninguém comenta: o daemon do Docker roda com privilégios de root. E adicionar um usuário ao grupo docker (aquele atalho para não digitar sudo) equivale, na prática, a dar acesso de administrador à máquina. Então só adicione usuários de confiança.

Para ambientes mais sensíveis, existe o modo rootless, em que o daemon e os containers rodam sem root. Outras boas práticas de segurança: prefira imagens oficiais ou verificadas do Docker Hub, mantenha o Docker atualizado e nunca coloque senhas ou chaves direto no Dockerfile.

Compartilhar este arquivo

5 destinos · 1 link · 1 pdf

Prefere ler no papel?

Versão limpa deste artigo, sem menus nem anúncios, para imprimir ou salvar em PDF.