Skip to content
Latchkey

O Que É uma Docker Image? Camadas, Tags e Digests Explicados

Uma Docker image é um snapshot somente leitura e em camadas de um filesystem mais metadados - o template a partir do qual todo container é iniciado.

Quando você faz docker run de algo, está iniciando um container a partir de uma image. A image é construída uma vez e nunca muda; ela é endereçada por conteúdo e feita de camadas empilhadas. Entender essa estrutura explica por que os builds fazem cache tão bem e por que o tamanho da image importa no CI.

Images são feitas de camadas

Cada instrução em um Dockerfile que altera o filesystem produz uma camada. As camadas se empilham umas sobre as outras e são compartilhadas entre images. Se duas images começam ambas com FROM ubuntu:22.04, elas compartilham essa camada base em disco e na transferência.

Imutável e endereçada por conteúdo

Uma image e cada uma de suas camadas são identificadas por um digest SHA-256 de seu conteúdo. Mude um byte e o digest muda. É isso que torna os pulls cacheáveis e os builds reproduzíveis - entradas idênticas produzem camadas idênticas.

Tags vs digests

Uma tag como myapp:1.4 é um ponteiro móvel e amigável para humanos. Um digest como sha256:abc... nomeia o conteúdo exato e nunca se move. No CI, fixar por digest garante que você faça deploy exatamente dos bits que testou.

Metadados da image

  • O comando e o entrypoint padrão a executar.
  • Variáveis de ambiente e portas expostas.
  • O diretório de trabalho e o usuário padrão.
  • A arquitetura e o OS que a image tem como alvo.

Por que o tamanho importa no CI

Images menores fazem pull mais rápido, push mais rápido e iniciam mais rápido - cada megabyte economizado é multiplicado em cada job. Enxugar images (builds multi-stage, bases mínimas) é uma das otimizações de CI de maior alavancagem.

Principais conclusões

  • Uma image é um template para containers imutável, em camadas e endereçado por conteúdo.
  • Tags são rótulos móveis; digests fixam o conteúdo exato.
  • Images menores economizam tempo em cada pull, push e início no CI.

Guias relacionados