O Que É Docker? Containers para Build e Deploy Explicados
Docker é uma ferramenta para empacotar aplicações e suas dependências em images de container portáveis que rodam da mesma forma em qualquer lugar, do laptop à produção.
O Docker tornou os containers algo popular. Ele permite descrever o ambiente de uma aplicação em um arquivo, transformá-lo em uma image e executá-lo como um container isolado em qualquer lugar onde o Docker esteja instalado. Em CI/CD, ele é tanto a forma de os builds obterem ambientes reproduzíveis quanto a forma de as aplicações serem empacotadas para deploy.
O que é Docker
Docker é uma plataforma para construir, distribuir e executar containers. Um container é um processo isolado que agrupa uma aplicação com suas bibliotecas e runtime, compartilhando o kernel do host mas de resto separado de outros processos. A CLI e o daemon do Docker constroem images e as executam como containers.
Images e containers
Uma image é um snapshot imutável e em camadas de um sistema de arquivos e metadados, construído a partir de instruções em um Dockerfile. Um container é uma instância em execução de uma image. As layers são armazenadas em cache e compartilhadas, então reconstruir uma image apenas refaz os passos que mudaram, o que é fundamental para builds rápidos.
Um exemplo de Dockerfile
Um Dockerfile descreve como construir a image.
FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["npm", "start"]Papel em CI/CD
O Docker é central em CI/CD: pipelines constroem images, executam testes dentro de containers para ambientes limpos e reproduzíveis, e enviam images para um registry para deploy. Builds de image consomem muito I/O e CPU; um cache de layers eficaz e um build cache são as maiores alavancas. Esses builds rodam mais rápido e mais barato em runners gerenciados com caches aquecidos, além de auto-retry em pulls de registry transitórios.
Alternativas
O Podman é uma alternativa daemonless e rootless com uma CLI compatível com o Docker. BuildKit e Buildah focam em construir images, enquanto o containerd é o runtime de nível mais baixo. O Docker continua sendo a ferramenta ponta a ponta mais familiar para construir e executar containers em desenvolvimento e CI.
Principais conclusões
- O Docker empacota aplicações em images de container portáveis e em camadas.
- O cache de layers torna os rebuilds rápidos ao refazer apenas os passos que mudaram.
- Em CI, ele constrói images, isola testes e produz artifacts implantáveis.