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

"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
| Aspecto | Máquina virtual | Container |
|---|---|---|
| Sistema operacional | Completo, um por VM | Compartilha o kernel do host |
| Tamanho | Gigabytes | Megabytes, em geral |
| Inicialização | Minutos | Segundos |
| Isolamento | Forte, no nível do hardware virtualizado | Menor, no nível do sistema operacional |
| Uso típico | Sistemas completos, sistemas operacionais diferentes | Aplicaçõ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:
FROMdefine a imagem base, aqui uma versão enxuta do Python.WORKDIRdefine o diretório de trabalho dentro do container.COPYcopia o arquivo da sua pasta para a imagem.CMDdefine 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
| Comando | O que faz |
|---|---|
docker build -t nome . | Constrói uma imagem a partir do Dockerfile |
docker run nome | Cria e executa um container |
docker ps | Lista os containers em execução |
docker ps -a | Lista todos, inclusive os parados |
docker logs id | Mostra a saída de um container |
docker stop id | Para um container |
docker images | Lista as imagens locais |
docker rm id | Remove um container |
docker rmi imagem | Remove 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
- Docker. Documentação oficial: visão geral.
- Docker. Referência do Dockerfile.
- Docker. Docker Compose.
- Open Container Initiative. Especificações OCI.
- Docker. Boas práticas de segurança.


