Skip to content
Latchkey

O Que É uma Base Image? A Fundação de Todo Build

Uma base image é aquilo do qual seu Dockerfile começa com FROM - a layer de fundação sobre a qual tudo o mais se empilha.

Toda imagem é construída sobre outra imagem, até uma raiz mínima. A imagem que você nomeia em FROM é sua base image. Ela determina seu SO inicial, ferramentas disponíveis, superfície de ataque e tamanho - então escolher a certa é uma das decisões mais consequentes em um Dockerfile.

Como uma base image é escolhida

Você escolhe uma base que já tem o que você precisa: um runtime de linguagem (python:3.12), um SO slim (debian:bookworm-slim) ou nada além do seu binário (scratch). Quanto mais próxima a base estiver da sua necessidade real, menor e mais seguro é o resultado.

Slim, full e scratch

  • Imagens full (ex.: node:20) incluem ferramentas de build - convenientes, mas grandes.
  • Imagens slim (node:20-slim) removem extras para uma pegada menor.
  • Imagens Alpine são minúsculas, mas usam musl libc, o que pode surpreender alguns binários.
  • scratch é vazia - ideal para binários estáticos sem SO algum.

Base menor, superfície menor

Uma base menor significa menos pacotes, o que significa menos CVEs para corrigir e uma superfície de ataque menor. Ela também faz pull e inicia mais rápido. O custo é a conveniência: você pode ter que adicionar ferramentas que presumia estarem lá.

Fixe (pin) sua base image

Evite latest puro. Fixe uma tag específica, ou melhor um digest, para que os builds sejam reproduzíveis e uma mudança upstream inesperada não possa silenciosamente quebrar ou alterar sua imagem.

Base images em CI

Como todo job que constrói sua imagem faz pull da base, cachear isso compensa repetidamente. Runners gerenciados mantêm as layers de base populares aquecidas, então o FROM resolve a partir do cache em vez de um pull frio a cada build.

Principais conclusões

  • A base image é aquilo do qual seu Dockerfile começa com FROM.
  • Bases menores significam menos vulnerabilidades, menos tamanho e pulls mais rápidos.
  • Fixe (pin) a base por tag ou digest para builds reproduzíveis.

Guias relacionados