0Pricing
Docker & DevOps Fundamentals · Aula

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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Docker & DevOps Fundamentals 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.

Camadas e Otimização de Imagens — ilustração 1

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:latest

O 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 RUN em um só para reduzir o número de camadas.
  • Limpe os arquivos temporários dentro dos respectivos comandos RUN para 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 Docker & DevOps Fundamentals, atualize para CoddyKit PRO. O curso de Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

Nenhuma experiência prévia é necessária. Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?

Sim. Cada aula de Docker & DevOps Fundamentals 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

  1. Entendendo os Dockerfiles
  2. Criação de Imagens Docker Personalizadas
  3. Camadas e Otimização de Imagens
  4. Compilações em várias etapas e imagens menores
← Voltar para Docker & DevOps Fundamentals