O que é o Docker? Contentores explicados para não programadores
O Docker é uma ferramenta que empacota uma app juntamente com tudo o que precisa para correr — a versão certa da linguagem, as bibliotecas, as ferramentas de sistema e as definições — numa unidade padrão chamada contentor. Um contentor corre da mesma forma no portátil de um programador, num servidor de testes ou num alojamento na nuvem, o que acaba com o clássico problema do «mas funcionava na minha máquina». A receita para construir um contentor é um ficheiro de texto curto chamado Dockerfile.
Porque é que o Docker importa quando cria com IA
Se a sua app tem um backend — uma API em Python, Node, C# ou Java — tem de correr num sítio com exatamente o software certo instalado. O Docker é a forma mais comum de tornar isso repetível.
- Publicar backends. Muitos alojamentos, incluindo o Mythex, publicam backends construindo um contentor a partir de um Dockerfile. No Mythex, se pedir «uma API web em C#» ou «um backend em Java», recebe a app mais um Dockerfile, e Publicar cria a imagem e implementa-a (backends de API).
- Sair de uma plataforma. Se exportar uma app criada com IA, um Dockerfile facilita muito executá-la noutro alojamento. Veja como exportar e alojar por conta própria uma app criada com IA.
- Trabalhar com programadores. Um programador que se junte ao seu projeto consegue arrancar a app inteira com um ou dois comandos, em vez de passar um dia a instalar coisas.
Uma analogia do dia a dia: contentores de carga
Antes dos contentores de carga normalizados, a carga era movida peça a peça — sacos, barris, caixas — e cada porto tratava-a de forma diferente. O contentor de aço padronizado mudou isso: embala-se uma vez, e qualquer navio, grua, comboio ou camião o pode mover sem se preocupar com o que lá está dentro.
O Docker faz o mesmo com o software:
- O Dockerfile é a lista de embalagem e as instruções.
- A imagem é o contentor selado e embalado.
- Um contentor em execução é essa caixa a trabalhar num navio — aqui, um servidor.
- O Docker Engine é a grua e o navio: o software num servidor que sabe executar qualquer contentor.
Como funciona o Docker
| Peça | O que é |
|---|---|
| Dockerfile | Um ficheiro de texto com instruções passo a passo para construir a imagem. |
| Imagem | Um pacote só de leitura: os elementos básicos do sistema operativo, o runtime, as bibliotecas e o seu código. |
| Contentor | Uma instância em execução de uma imagem, isolada de outras apps na mesma máquina. |
| Registo | Um lugar para guardar e partilhar imagens, como o Docker Hub ou o registo de um fornecedor de nuvem. |
| Docker Engine | O serviço em segundo plano que constrói imagens e executa contentores. Gratuito e de código aberto. |
| Docker Desktop | Uma aplicação para Mac, Windows e Linux que junta o engine a uma interface gráfica. |
Contentores vs máquinas virtuais: uma máquina virtual finge ser um computador completo e separado, com o seu próprio sistema operativo, por isso é pesada e lenta a arrancar. Um contentor partilha o kernel do sistema operativo anfitrião e isola apenas a app e os seus ficheiros, por isso costuma arrancar em segundos e usa muito menos memória. Muitos contentores podem correr lado a lado num só servidor.
Um exemplo prático: uma pequena API Python
Imagine que o seu criador com IA criou um backend FastAPI em Python para uma app de marcações. 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 a 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 contentor. |
COPY requirements.txt . e RUN pip install ... | Copia a lista de bibliotecas e instala-as. |
COPY . . | Copia o próprio código da app. |
EXPOSE 8000 | Indica que a app escuta na porta 8000. |
CMD [...] | O comando que arranca o servidor web quando o contentor corre. |
Dito por palavras simples: «Começa com o Python 3.12. Instala as bibliotecas listadas em requirements.txt. Copia o código. Arranca o servidor web na porta 8000.»
Um programador (ou uma plataforma de alojamento) executa depois dois comandos:
docker build -t booking-api .
docker run -p 8000:8000 booking-api
O primeiro constrói a imagem e dá-lhe o nome booking-api. O segundo arranca um contentor e liga a porta 8000 da máquina à porta 8000 dentro do contentor. A API está agora em execução — da mesma forma que estará em qualquer servidor que tenha Docker.
Repare no que não está na imagem: passwords e chaves de API. Essas são passadas quando o contentor arranca, como variáveis de ambiente, para que a mesma imagem possa correr em testes e em produção com definições diferentes.
Termos-chave
| Termo | Significado |
|---|---|
| Contentor | Um pacote isolado e em execução de uma app e das suas dependências. |
| Imagem | O modelo a partir do qual um contentor é 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 acrescenta uma camada em cache, o que torna as reconstruções mais rápidas. |
| Mapeamento de portas | Ligar uma porta do anfitrião a uma porta dentro do contentor. |
| Volume | Armazenamento que sobrevive quando um contentor é substituído. Os contentores em si são descartáveis. |
| Docker Compose | Um ficheiro que descreve vários contentores a correr em conjunto, como uma API mais uma base de dados. |
| Kubernetes | Um sistema para executar muitos contentores em muitos servidores. A maioria das apps pequenas não precisa dele. |
Erros e ideias erradas comuns
- «O Docker é uma máquina virtual.» É mais leve: os contentores partilham o kernel do anfitrião.
- «Os dados guardados dentro de um contentor estão seguros.» Os contentores foram feitos para serem descartados e substituídos. Tudo o que tem de durar — dados de utilizadores, uploads — pertence a uma base de dados, a um armazenamento de ficheiros ou a um volume.
- «Pôr segredos no Dockerfile é seguro porque é privado.» As imagens são partilhadas e enviadas para registos. Passe os segredos em tempo de execução.
- «O Docker torna uma app segura.» O isolamento ajuda, mas um contentor com software desatualizado e definições fracas continua vulnerável.
- «Toda a app precisa de Docker.» Um site estático ou um frontend simples costuma ser alojado como simples ficheiros, sem contentor nenhum.
- «O Docker Desktop é gratuito para toda a gente.» O engine é gratuito; o Docker Desktop exige uma subscrição paga para empresas maiores, segundo os termos do Docker.
O que pedir ao seu criador com IA
- «Esta app precisa de um Dockerfile? Se sim, explica cada linha em linguagem simples.»
- «Usa uma imagem base pequena e oficial e fixa a versão da linguagem.»
- «Mantém os segredos fora da imagem. Lê-os de variáveis de ambiente em tempo de execução.»
- «Garante que os uploads e os dados são guardados na base de dados ou no armazenamento de ficheiros, não dentro do contentor.»
- «Acrescenta um ficheiro Docker Compose para que um programador consiga correr o frontend, a API e a base de dados localmente com um só comando.»
- «Acrescenta um endpoint de verificação de saúde para que o alojamento consiga saber se a API está em funcionamento.»
Docker no Mythex
Não precisa de instalar nem de executar o Docker para usar o Mythex. O seu projeto corre num ambiente de nuvem privado, e quando pede um backend que precise de um contentor — por exemplo C#, Java ou um serviço Node ou Python personalizado — o Mythex escreve a app mais um Dockerfile, pré-visualiza-a no ambiente e implementa-a quando publica, sem nada para configurar no alojamento (como é escolhida a tecnologia). No Pro, pode exportar o projeto ou sincronizá-lo com o GitHub e levar o Dockerfile consigo. Para perceber como backends e frontends se articulam, veja frontend vs backend.
Perguntas
O que é o Docker, em termos simples?
O Docker é uma ferramenta que empacota uma app juntamente com tudo o que precisa para correr — o runtime da linguagem, as bibliotecas e as definições — numa unidade padrão chamada contentor. O contentor corre da mesma forma num portátil, num servidor de testes ou num alojamento na nuvem.
Qual é a diferença entre uma imagem Docker e um contentor?
Uma imagem é o modelo empacotado e só de leitura: a app e as suas dependências, construídos a partir de um Dockerfile. Um contentor é uma cópia em execução dessa imagem. Pode iniciar muitos contentores a partir de uma só imagem.
O Docker é uma máquina virtual?
Não. Uma máquina virtual emula um computador completo com o seu próprio sistema operativo. Os contentores partilham o kernel do sistema operativo da máquina anfitriã e isolam apenas a app, por isso arrancam mais depressa e usam menos memória.
O Docker é gratuito?
O Docker Engine, o núcleo que executa os contentores, é gratuito e de código aberto. Segundo os termos do Docker, a partir de setembro de 2026, o Docker Desktop é gratuito para projetos de código aberto não comerciais e para empresas com menos de 250 funcionários e menos de 10 milhões de dólares de faturação anual; empresas maiores precisam de uma subscrição paga.
Preciso de aprender Docker para criar uma app com IA?
Normalmente não. Muitos criadores com IA tratam dos contentores por si. Convém saber o que é um Dockerfile, para perceber como é empacotado um backend e para o poder executar ou alojar noutro sítio se exportar a app.