O que é Docker? Containers explicados para não programadores
Docker é uma ferramenta que empacota um app junto com tudo o que ele precisa para rodar — a versão certa da linguagem, bibliotecas, ferramentas do sistema e configurações — em uma unidade padrão chamada container. Um container roda do mesmo jeito no notebook de um desenvolvedor, em um servidor de testes ou em uma hospedagem na nuvem, o que acaba com o clássico problema do "mas na minha máquina funcionava". A receita para construir um container é um pequeno arquivo de texto chamado Dockerfile.
Por que o Docker importa quando você cria com IA
Se o seu app tem um backend — uma API em Python, Node, C# ou Java — ele precisa rodar em algum lugar com exatamente o software certo instalado. O Docker é a forma mais comum de tornar isso repetível.
- Implantar backends. Muitas hospedagens, incluindo o Mythex, implantam backends construindo um container a partir de um Dockerfile. No Mythex, pedir "uma API Web em C#" ou "um backend em Java" gera o app mais um Dockerfile, e a publicação constrói a imagem e a implanta (backends de API).
- Sair de uma plataforma. Se você exportar um app criado com IA, um Dockerfile facilita muito rodá-lo em outra hospedagem. Veja como exportar e hospedar por conta própria um app criado com IA.
- Trabalhar com desenvolvedores. Um desenvolvedor que entra no seu projeto pode iniciar o app inteiro com um ou dois comandos, em vez de passar um dia instalando coisas.
Uma analogia do dia a dia: contêineres de navio
Antes dos contêineres de carga padronizados, as mercadorias eram carregadas peça por peça — sacos, barris, caixotes — e cada porto lidava com isso de um jeito. O contêiner de aço padrão mudou isso: empacote uma vez, e qualquer navio, guindaste, trem ou caminhão pode transportá-lo sem se importar com o que há dentro.
O Docker faz o mesmo com software:
- O Dockerfile é a lista de embalagem e as instruções.
- A imagem é o contêiner lacrado e empacotado.
- Um container em execução é essa caixa posta para trabalhar em um navio — aqui, um servidor.
- O Docker Engine é o guindaste e o navio: o software em um servidor que sabe executar qualquer container.
Como o Docker funciona
| Peça | O que é |
|---|---|
| Dockerfile | Um arquivo de texto com instruções passo a passo para construir a imagem. |
| Imagem | Um pacote somente leitura: a base do sistema operacional, o ambiente de execução, bibliotecas e o seu código. |
| Container | Uma instância em execução de uma imagem, isolada de outros apps na mesma máquina. |
| Registro (registry) | Um lugar para armazenar e compartilhar imagens, como o Docker Hub ou o registro de um provedor de nuvem. |
| Docker Engine | O serviço em segundo plano que constrói imagens e executa containers. Gratuito e de código aberto. |
| Docker Desktop | Um aplicativo para Mac, Windows e Linux que reúne o engine com uma interface gráfica. |
Containers versus máquinas virtuais: uma máquina virtual finge ser um computador inteiro separado, com o próprio sistema operacional, então é pesada e demora para iniciar. Um container compartilha o kernel do sistema operacional do host e isola apenas o app e os arquivos dele, então normalmente inicia em segundos e usa bem menos memória. Vários containers podem rodar lado a lado em um mesmo servidor.
Um exemplo prático: uma pequena API em Python
Suponha que o seu criador de apps com IA gerou um backend FastAPI em Python para um app de reservas. O Dockerfile poderia ser assim:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Linha por linha:
| Linha | O que faz |
|---|---|
FROM python:3.12-slim | Começa a partir de uma imagem oficial que já tem o Python 3.12 instalado. |
WORKDIR /app | Trabalha dentro da pasta /app do container. |
COPY requirements.txt . e RUN pip install ... | Copia a lista de bibliotecas e as instala. |
COPY . . | Copia o código do próprio app. |
EXPOSE 8000 | Registra que o app escuta na porta 8000. |
CMD [...] | O comando que inicia o servidor web quando o container roda. |
Em palavras simples: "Comece com o Python 3.12. Instale as bibliotecas listadas em requirements.txt. Copie o código. Inicie o servidor web na porta 8000."
Um desenvolvedor (ou uma plataforma de hospedagem) então executa dois comandos:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
O primeiro constrói a imagem e a chama de booking-api. O segundo inicia um container e liga a porta 8000 da máquina à porta 8000 dentro do container. A API agora está rodando — do mesmo jeito que rodará em qualquer servidor que tenha Docker.
Repare no que não está na imagem: senhas e chaves de API. Elas são passadas quando o container inicia, como variáveis de ambiente, para que a mesma imagem possa rodar em testes e em produção com configurações diferentes.
Termos-chave
| Termo | Significado |
|---|---|
| Container | Um pacote isolado e em execução de um app e suas dependências. |
| Imagem | O modelo a partir do qual um container é iniciado. |
| Imagem base | O ponto de partida na linha FROM de um Dockerfile, como python:3.12-slim ou node:22. |
| Camada (layer) | Cada passo do Dockerfile adiciona uma camada em cache, o que deixa as reconstruções mais rápidas. |
| Mapeamento de porta | Ligar uma porta da máquina hospedeira a uma porta dentro do container. |
| Volume | Armazenamento que sobrevive quando um container é substituído. Os containers em si são descartáveis. |
| Docker Compose | Um arquivo que descreve vários containers que rodam juntos, como uma API mais um banco de dados. |
| Kubernetes | Um sistema para executar muitos containers em muitos servidores. A maioria dos apps pequenos não precisa dele. |
Equívocos comuns
- "Docker é uma máquina virtual." É mais leve: os containers compartilham o kernel do host.
- "Dados salvos dentro de um container estão seguros." Containers foram feitos para serem descartados e substituídos. Tudo o que precisa durar — dados de usuários, uploads — pertence a um banco de dados, a um armazenamento de arquivos ou a um volume.
- "Colocar segredos no Dockerfile não tem problema porque é privado." As imagens são compartilhadas e enviadas para registros. Passe os segredos na hora da execução.
- "O Docker torna um app seguro." O isolamento ajuda, mas um container que roda software desatualizado com configurações fracas continua vulnerável.
- "Todo app precisa de Docker." Um site estático ou um frontend simples normalmente é hospedado como arquivos comuns, sem container algum.
- "O Docker Desktop é gratuito para todos." O engine é gratuito; o Docker Desktop exige assinatura paga para empresas maiores, segundo os termos do Docker.
O que pedir ao seu criador de apps com IA
- "Este app precisa de um Dockerfile? Se sim, explique cada linha em português simples."
- "Use uma imagem base pequena e oficial e fixe a versão da linguagem."
- "Mantenha os segredos fora da imagem. Leia-os de variáveis de ambiente na execução."
- "Garanta que uploads e dados sejam armazenados no banco de dados ou em armazenamento de arquivos, e não dentro do container."
- "Adicione um arquivo Docker Compose para que um desenvolvedor possa rodar o frontend, a API e o banco de dados localmente com um único comando."
- "Adicione um endpoint de verificação de saúde para que a hospedagem consiga saber se a API está no ar."
Docker no Mythex
Você não precisa instalar nem rodar o Docker para usar o Mythex. Seu projeto roda em um sandbox privado na nuvem, e quando você pede um backend que precisa de um container — por exemplo C#, Java ou um serviço personalizado em Node ou Python — o Mythex escreve o app mais um Dockerfile, mostra a prévia no sandbox e o implanta quando você publica, sem nenhuma hospedagem para configurar (como a tecnologia é escolhida). No plano Pro, você pode exportar o projeto ou sincronizá-lo com o GitHub e levar o Dockerfile com você. Para entender como backends e frontends se encaixam, veja frontend vs backend.
Perguntas
O que é Docker, em termos simples?
Docker é uma ferramenta que empacota um app junto com tudo o que ele precisa para rodar — o ambiente de execução da linguagem, bibliotecas e configurações — em uma unidade padrão chamada container. O container roda do mesmo jeito em um notebook, em um servidor de testes ou em uma hospedagem na nuvem.
Qual é a diferença entre uma imagem Docker e um container?
Uma imagem é o modelo empacotado e somente leitura: o app e suas dependências, construídos a partir de um Dockerfile. Um container é uma cópia em execução dessa imagem. Você pode iniciar muitos containers a partir de uma única imagem.
Docker é uma máquina virtual?
Não. Uma máquina virtual emula um computador inteiro, com o próprio sistema operacional. Os containers compartilham o kernel do sistema operacional da máquina hospedeira e isolam apenas o app, por isso iniciam mais rápido e usam menos memória.
O Docker é gratuito?
O Docker Engine, o núcleo que executa os containers, é gratuito e de código aberto. Em setembro de 2026, os termos do Docker dizem que o Docker Desktop é gratuito para projetos de código aberto não comerciais e para empresas com menos de 250 funcionários e receita anual inferior a US$ 10 milhões; empresas maiores precisam de uma assinatura paga.
Preciso aprender Docker para criar um app com IA?
Normalmente não. Muitos criadores de apps com IA cuidam dos containers por você. Ajuda saber o que é um Dockerfile para entender como um backend é empacotado e para poder rodar ou hospedar o app em outro lugar caso você o exporte.