O Que É o Docker? A Ferramenta Que Tornou os Containers Populares
O Docker é o conjunto de ferramentas que tornou os containers fáceis: uma CLI, um sistema de build e um runtime que transformam um Dockerfile em um container em execução.
Containers existiam antes do Docker, mas o Docker empacotou o fluxo de trabalho em algo que os desenvolvedores realmente conseguiam usar no dia a dia. Ele nos deu um formato de image padrão, um comando de build simples e um modelo de registry para compartilhar images. Hoje, "Docker" muitas vezes representa a conteinerização de forma geral, mesmo onde outras ferramentas fazem o trabalho.
As peças do Docker
- Docker CLI - o comando
dockerque você digita. - Docker daemon (dockerd) - o serviço em segundo plano que faz o build e roda os containers.
- Images e um sistema de build - transformando um Dockerfile em uma image executável.
- Registries - onde as images são enviadas (push) e baixadas (pull) (Docker Hub, GHCR, ECR).
O fluxo de trabalho central
Você escreve um Dockerfile, roda docker build -t myapp . para produzir uma image, docker run myapp para iniciar um container e docker push para compartilhá-la. Esse ciclo build-run-ship é o coração do Docker e se mapeia de forma limpa nas etapas do CI.
Images vs containers
Uma image é o template imutável; um container é uma instância em execução (ou parada) dessa image. Uma image pode gerar muitos containers, assim como uma classe pode produzir muitos objetos.
O Docker é a única opção?
Não. O padrão OCI significa que as images são portáteis entre ferramentas. Podman, containerd e BuildKit podem construir ou rodar as mesmas images. Mas o Docker continua sendo o ponto de entrada mais comum, e a maioria dos exemplos de CI assume seu uso.
O Docker no CI/CD
Os pipelines usam o Docker para fazer o build das images da aplicação, rodar testes dentro de containers e enviar releases para os registries. Como o daemon e o cache de camadas importam para a velocidade, o runner em que você faz o build afeta diretamente o tempo de build. Runners gerenciados (Latchkey) mantêm caches aquecidos e refazem automaticamente pushes instáveis, para que os builds de image sejam mais rápidos e menos frágeis.
Principais conclusões
- O Docker é uma plataforma: CLI, daemon, sistema de build e fluxo de trabalho de registry.
- Uma image é o template; um container é uma instância em execução.
- As images seguem o padrão OCI, então são portáteis para além do próprio Docker.