Docker e containers: o que são e por que mudaram a forma de publicar aplicações

O que são containers e o Docker, como funcionam imagens e Dockerfiles, a diferença para máquinas virtuais, comandos básicos com exemplos e os cuidados essenciais de segurança e persistência de dados.

Por Equipe Global World Connect

8 min de leitura

Ilustração de um navio carregando containers empilhados, representando o Docker
Ilustração original do Global World Connect

"Na minha máquina funciona." A frase virou piada entre desenvolvedores porque descreve um problema real: um programa que roda bem no computador de quem o escreveu e falha em outro ambiente, por diferença de versão, biblioteca ou configuração.

Containers foram criados, em grande parte, para acabar com esse tipo de surpresa. O Docker é a ferramenta que os popularizou. Este guia explica o que são containers, como o Docker funciona, o que o difere de uma máquina virtual, e mostra exemplos práticos com comandos que você pode testar.

O que é um container

Um container é um pacote isolado que reúne uma aplicação e tudo de que ela precisa para executar: código, bibliotecas, dependências e configurações. Ele roda de forma consistente em qualquer lugar que tenha um ambiente de execução de containers.

Diferente de uma máquina virtual, o container não traz um sistema operacional completo. Ele compartilha o núcleo (kernel) do sistema do computador em que está rodando e usa recursos do próprio sistema, como isolamento de processos e limites de uso de memória e CPU, para manter cada container separado dos outros.

O resultado é um ambiente leve, que sobe em segundos e ocupa menos espaço do que uma máquina virtual.

O que é o Docker

Docker é uma plataforma para criar, distribuir e executar containers. Ela reúne algumas peças:

  • Docker Engine: o serviço que executa e gerencia containers.
  • Imagens: os modelos, somente leitura, a partir dos quais os containers são criados.
  • Dockerfile: o arquivo de texto com a receita para construir uma imagem.
  • Registro (registry): um repositório de imagens. O Docker Hub é o mais conhecido, e as nuvens têm os seus.
  • Docker Compose: ferramenta para definir e executar aplicações com vários containers.

Os formatos de imagem e de execução seguem especificações abertas mantidas pela Open Container Initiative (OCI), o que permite que outras ferramentas, além do Docker, trabalhem com os mesmos containers.

Imagem x container

A confusão entre os dois é comum. A analogia mais útil é a de classe e objeto, ou de receita e bolo:

  • a imagem é a receita: um modelo imutável, com camadas empilhadas;
  • o container é o bolo: uma instância em execução criada a partir da imagem.

De uma única imagem, você pode iniciar vários containers.

As imagens são construídas em camadas. Cada instrução do Dockerfile cria uma camada, e camadas iguais são reaproveitadas, o que economiza espaço e acelera downloads e builds.

Containers x máquinas virtuais

AspectoMáquina virtualContainer
Sistema operacionalCompleto, um por VMCompartilha o kernel do host
TamanhoGigabytesMegabytes, em geral
InicializaçãoMinutosSegundos
IsolamentoForte, no nível do hardware virtualizadoMenor, no nível do sistema operacional
Uso típicoSistemas completos, sistemas operacionais diferentesAplicações e serviços

Não é uma disputa: os dois convivem. Muitos containers rodam dentro de máquinas virtuais na nuvem. A escolha depende do nível de isolamento e do tipo de carga. Veja o contexto em o que é computação em nuvem.

Um exemplo simples: do zero ao container

Suponha um pequeno programa em Python. Crie uma pasta com dois arquivos.

app.py:

print("Olá do container!")

Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]

O que cada linha faz:

  1. FROM define a imagem base, aqui uma versão enxuta do Python.
  2. WORKDIR define o diretório de trabalho dentro do container.
  3. COPY copia o arquivo da sua pasta para a imagem.
  4. CMD define o comando executado quando o container inicia.

Agora, no terminal, dentro dessa pasta:

docker build -t ola-container .
docker run --rm ola-container

O primeiro comando constrói a imagem com o nome ola-container. O segundo executa um container a partir dela e o remove ao final (--rm). A saída será a mensagem do programa.

Para testar se o Docker está instalado corretamente, existe também o comando docker run hello-world.

Comandos essenciais

ComandoO que faz
docker build -t nome .Constrói uma imagem a partir do Dockerfile
docker run nomeCria e executa um container
docker psLista os containers em execução
docker ps -aLista todos, inclusive os parados
docker logs idMostra a saída de um container
docker stop idPara um container
docker imagesLista as imagens locais
docker rm idRemove um container
docker rmi imagemRemove uma imagem

Confira a lista completa com docker --help e na documentação oficial.

Portas e dados: dois conceitos importantes

Publicando portas

Um container é isolado da rede do computador por padrão. Para acessar um serviço que roda dentro dele, é preciso publicar uma porta:

docker run -d -p 8080:80 nginx:stable

Esse comando roda o servidor web Nginx em segundo plano (-d) e liga a porta 8080 do seu computador à porta 80 do container. Depois disso, http://localhost:8080 mostra a página padrão.

Persistência de dados

Os arquivos criados dentro de um container somem quando ele é removido. Para guardar dados, use volumes ou pastas montadas (bind mounts):

docker run -d -v meus-dados:/var/lib/dados minha-imagem

Bancos de dados, uploads e qualquer coisa que precise sobreviver ao container devem ficar em volumes.

Docker Compose: vários containers juntos

Aplicações reais costumam ter várias partes: um servidor web, um banco de dados, um cache. O Docker Compose descreve tudo em um arquivo compose.yaml:

services:
  web:
    image: nginx:stable
    ports:
      - "8080:80"

E sobe com um comando:

docker compose up -d

Cada serviço vira um container, e o Compose cuida das redes entre eles. É uma ótima ferramenta para ambientes de desenvolvimento e aplicações pequenas. Para dezenas ou centenas de containers em vários servidores, entra a orquestração, tema de Kubernetes.

Para que containers servem

  • Ambientes de desenvolvimento idênticos entre pessoas e máquinas.
  • Publicação de aplicações de forma repetível, do notebook à nuvem.
  • Integração e entrega contínuas (CI/CD): testes rodam em ambientes limpos.
  • Microsserviços: cada serviço em seu container.
  • Testar tecnologias sem instalá-las no sistema. Por exemplo, para rodar um serviço de IA local, existem imagens prontas, como no guia sobre Ollama.
  • Execução em serviços de nuvem que aceitam containers, como as plataformas gerenciadas de cada provedor.

Limites e cuidados

Containers não resolvem tudo, e trazem cuidados próprios.

Segurança

  • Isolamento menor que o de uma VM. Uma falha no kernel compartilhado pode afetar todos os containers.
  • Origem das imagens. Use imagens oficiais ou de fontes confiáveis, e mantenha-as atualizadas. Imagens desatualizadas podem trazer vulnerabilidades.
  • Não rode como administrador (root) dentro do container sem necessidade. Defina um usuário comum no Dockerfile.
  • Não coloque segredos (senhas, chaves) dentro da imagem. Use variáveis de ambiente e mecanismos de segredos.
  • Cuidado com permissões do Docker. Quem controla o Docker no servidor tem, na prática, poder de administrador. Não exponha a API do Docker à internet.
  • Verifique as imagens com ferramentas de análise de vulnerabilidades e mantenha um processo de atualização.

Para o contexto geral, veja segurança digital.

Dados e estado

Containers foram pensados para serem descartáveis. Guarde dados em volumes ou serviços externos e faça backup deles.

Complexidade e licenças

Gerenciar muitos containers em produção exige ferramentas e conhecimento. E as condições de licença de produtos como o Docker Desktop, que é uma aplicação com interface, podem variar conforme o porte da organização, então confira as regras vigentes. O Docker Engine em si é de código aberto.

Perguntas frequentes

Preciso do Docker para usar containers?

Não. Existem outras ferramentas compatíveis com o padrão OCI, como o Podman. O Docker é a mais difundida.

Container e máquina virtual, qual devo usar?

Para aplicações e serviços, containers costumam ser mais leves e rápidos. Para isolamento forte ou sistemas operacionais diferentes, máquinas virtuais são mais indicadas. É comum usar as duas.

Dá para rodar Docker no Windows e no Mac?

Sim. Nesses sistemas, os containers Linux rodam sobre uma camada de virtualização integrada às ferramentas do Docker.

Como eu aprendo Docker?

Instale, rode o hello-world, empacote um programa simples como no exemplo e depois experimente o Compose. A documentação oficial tem tutoriais de início. Para o caminho geral de estudo, veja como aprender a programar do zero.

Conclusão

Containers empacotam uma aplicação com suas dependências em um ambiente isolado e leve, que roda da mesma forma em qualquer lugar. O Docker popularizou esse modelo com imagens, Dockerfiles e um ecossistema de ferramentas como o Compose.

Eles simplificam desenvolvimento e publicação, mas exigem atenção a segurança, origem das imagens e persistência de dados. Comece com um exemplo pequeno, e só depois pense em orquestração. Este guia foi revisado em setembro de 2026, e as ferramentas evoluem, por isso confira a documentação oficial.

Fontes

Gostou? Compartilhe:WhatsAppFacebookXLinkedInTelegram
← Ver todos os artigos