Camadas e Otimização de Imagens
Descubra como as imagens Docker são organizadas em camadas e aplique técnicas para otimizar seu tamanho e o tempo de criação.
Camadas e Otimização de Imagens é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Camadas de imagem: blocos de construção
As imagens Docker não são um único arquivo gigantesco. Em vez disso, elas são formadas por uma série de camadas somente leitura. Pense nessas camadas como transparências empilhadas.
Cada camada representa uma alteração na imagem, tornando as imagens eficientes e flexíveis. Essa estrutura em camadas é fundamental para o funcionamento do Docker.

Instruções do arquivo Docker e camadas
Ao escrever um Dockerfile, quase toda instrução cria uma nova camada sobre a anterior. Instruções como FROM, RUN, COPY e ADD contribuem para a criação de novas camadas.
O Docker executa essas instruções sequencialmente, criando cada nova camada com base no estado da anterior.
Inspecionando o histórico da imagem
Você pode ver as camadas que compõem uma imagem usando o comando docker history. Esse comando mostra cada instrução, seu tamanho e quando ela foi criada, ajudando você a entender como a imagem cresceu.
Essa é uma ferramenta poderosa para investigar problemas relacionados ao tamanho da imagem.
docker history my-image:latestO poder do armazenamento em cache de camadas
O Docker usa um cache de criação inteligente. Se uma instrução do seu Dockerfile e o contexto correspondente (por exemplo, os arquivos que estão sendo copiados) não tiverem mudado desde a última criação, o Docker reutilizará a camada existente.
Essa reutilização acelera significativamente as criações seguintes, pois o Docker não precisa executar novamente as etapas que não foram alteradas.
Otimização 1: ordem inteligente das camadas
A ordem das instruções no seu Dockerfile é fundamental para um armazenamento em cache eficiente. Coloque no início as instruções que mudam com pouca frequência (como a instalação de dependências do sistema).
As instruções que mudam frequentemente (como a cópia do código do aplicativo) devem ficar mais abaixo. Assim, se apenas o código mudar, o Docker poderá reutilizar as camadas armazenadas em cache para as dependências estáveis.
Exemplo: Otimização da Ordem das Camadas
Compare estes dois trechos de Dockerfile. A ordem adequada coloca primeiro as dependências estáveis, permitindo que o Docker as armazene em cache e recrie apenas as camadas do código do aplicativo que muda.
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "server.js"]Otimização 2: consolidando comandos RUN
Cada comando RUN normalmente cria uma nova camada. Você pode reduzir o número de camadas e, muitas vezes, o tamanho final da imagem combinando vários comandos em uma única instrução RUN.
Use o operador && \ para encadear comandos, fazendo com que eles façam parte de uma única camada atômica.
Exemplo: encadeando comandos RUN
Em vez de usar vários comandos RUN, encadeie-os com && \. Isso cria uma única camada mais eficiente para todas essas operações.
FROM ubuntu:latest
RUN apt-get update && \
apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
CMD ["bash"]Otimização 3: limpando arquivos
Sempre limpe os arquivos necessários apenas durante o processo de criação. Por exemplo, caches do gerenciador de pacotes (como apt-get clean) ou artefatos temporários de criação podem aumentar significativamente o tamanho das camadas da sua imagem.
Limpá-los dentro do mesmo comando RUN que os criou garante que eles não persistam em uma camada anterior.
Verificação rápida: otimização de imagens
Considere o seguinte trecho de Dockerfile:
FROM alpine:latest
COPY . /app
RUN apk add --no-cache git
RUN apk add --no-cache make
CMD ["sh"]Qual das alterações a seguir otimizaria melhor este Dockerfile para reduzir o tamanho da imagem e potencialmente acelerar novas criações?
Recapitulação: imagens menores e mais rápidas
Você aprendeu que as imagens Docker são criadas em camadas, e que cada instrução normalmente cria uma nova camada. Entender isso é essencial para a otimização!
- Organize as instruções cuidadosamente para maximizar os acertos do cache de criação.
- Combine vários comandos
RUNem um só para reduzir o número de camadas. - Limpe os arquivos temporários dentro dos respectivos comandos
RUNpara manter as camadas pequenas.
Essas técnicas ajudam a criar imagens Docker menores e mais rápidas de criar, essenciais para implantações eficientes.
Perguntas Frequentes
A aula “Camadas e Otimização de Imagens” é grátis?
Sim — o texto completo de “Camadas e Otimização de Imagens” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Camadas e Otimização de Imagens”?
Descubra como as imagens Docker são organizadas em camadas e aplique técnicas para otimizar seu tamanho e o tempo de criação. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Camadas e Otimização de Imagens”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Entendendo os Dockerfiles
- Criação de Imagens Docker Personalizadas
- Camadas e Otimização de Imagens
- Compilações em várias etapas e imagens menores