Home > Blog > Programação
Programação

O que é Docker e para que Serve? Guia com Exemplos

Atualizado em: 14 de julho de 2026

logo Docker branco em um fundo azul

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:

  1. Você descreve como preparar a aplicação em um arquivo chamado Dockerfile.
  2. O comando docker build lê o Dockerfile e cria uma imagem.
  3. A imagem pode ficar no computador ou ser publicada em um registro, como o Docker Hub.
  4. O comando docker run cria 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.

ConceitoO que significaExemplo
ImagemPacote somente para leitura que contém arquivos, bibliotecas, configurações e instruçõesnginx:alpine
ContêinerInstância criada e executada a partir de uma imagemUm servidor NGINX em execução
RegistroServiço que armazena e distribui imagensDocker Hub
DockerfileArquivo com instruções para construir uma imagemFROM, 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 dockerd que gerencia imagens, contêineres, redes e volumes.
  • Docker CLI: comando docker usado 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:

Bash
docker run --name meu-nginx -d -p 8080:80 nginx:alpine

Abra http://localhost:8080 no navegador. A página padrão do NGINX deve aparecer.

Parte do comandoFunção
docker runCria e inicia um contêiner
--name meu-nginxDefine um nome fácil de identificar
-dExecuta em segundo plano
-p 8080:80Liga a porta 8080 do computador à porta 80 do contêiner
nginx:alpineImagem e tag usadas para criar o contêiner

Alguns comandos úteis para acompanhar e remover o exemplo:

Bash
docker ps
docker logs meu-nginx
docker stop meu-nginx
docker rm meu-nginx

Como 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:

Bash
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html

Na mesma pasta, construa a imagem e execute o site:

Bash
docker build -t meu-site .
docker run --name site-local -d -p 8080:80 meu-site

O 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:

YAML
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"

  cache:
    image: redis:alpine

Para iniciar e encerrar os serviços:

Bash
docker compose up -d
docker compose down

O 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.

Bash
docker volume create dados
docker run -d --name banco -e POSTGRES_PASSWORD=senha-local -v dados:/var/lib/postgresql/data postgres:alpine

A 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ísticaContêiner DockerMáquina virtual
Tipo de virtualizaçãoNível do sistema operacionalHardware virtualizado
Sistema operacionalCompartilha o kernel do ambiente hospedeiroExecuta um sistema convidado com kernel próprio
InicializaçãoGeralmente rápidaNormalmente mais demorada
Consumo de recursosMenor na maioria dos cenáriosMaior por incluir um sistema completo
IsolamentoIsolamento de processos e recursosFronteira de virtualização mais completa
Uso comumAplicações, serviços, testes e pipelinesSistemas 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

FerramentaResponsabilidade principal
DockerConstruir imagens e executar contêineres
Docker ComposeDefinir e iniciar vários serviços, principalmente em desenvolvimento e ambientes menores
KubernetesOrquestrar 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.

Os 10 Melhores Cursos de Programação de 2026

Descubra os melhores cursos de programação. Aprenda a escolher o curso ideal para iniciar ou avançar na carreira de desenvolvedor

POSTS RELACIONADOS

Ver todos

Seta para a direita