Introdução
Neste laboratório, você aprenderá como usar o comando docker history para inspecionar as camadas de uma imagem Docker. Compreender as camadas da imagem e seus comandos de criação é crucial para depurar e otimizar suas imagens Docker.
Você começará visualizando o histórico básico de uma imagem, depois explorará opções para desabilitar a truncagem da saída para visibilidade completa dos comandos e usará o modo de saída silencioso para uma visualização concisa. Além disso, você aprenderá como formatar a saída do histórico usando templates Go para relatórios personalizados e como mostrar o histórico de imagens construídas para plataformas específicas.
Visualizar o histórico de uma imagem Docker
Nesta etapa, você aprenderá como visualizar o histórico de uma imagem Docker. O histórico de uma imagem mostra as camadas que compõem a imagem e os comandos que foram usados para criar cada camada. Isso é útil para entender como uma imagem foi construída e para depurar problemas.
Primeiro, vamos baixar uma imagem Docker que podemos inspecionar. Usaremos a imagem ubuntu para este exemplo.
docker pull ubuntu
Você deve ver uma saída indicando que a imagem está sendo baixada. Depois que o download for concluído, você pode visualizar o histórico da imagem usando o comando docker history seguido pelo nome ou ID da imagem.
docker history ubuntu
A saída do comando docker history mostrará uma tabela com várias colunas:
IMAGE: O ID da camada da imagem.CREATED: O tempo em que a camada foi criada.CREATED BY: O comando que foi usado para criar a camada.SIZE: O tamanho da camada.COMMENT: Qualquer comentário associado à camada.
Este histórico permite que você rastreie as etapas tomadas para construir a imagem ubuntu, mostrando cada comando executado e a camada resultante.
Visualizar histórico com saída truncada desabilitada
Na etapa anterior, você visualizou o histórico da imagem ubuntu. Você pode ter notado que parte da saída, particularmente os comandos na coluna CREATED BY, foi truncada. Este é o comportamento padrão do docker history para manter a saída concisa.
Para visualizar a saída completa sem truncamento, você pode usar a flag --no-trunc com o comando docker history.
Vamos tentar isso com a imagem ubuntu.
docker history --no-trunc ubuntu
Agora, você deve ver os comandos completos que foram usados para criar cada camada da imagem ubuntu. Isso pode ser muito útil quando você precisa ver os detalhes exatos de como uma camada foi construída, especialmente para imagens complexas com comandos de construção longos.
Compare a saída deste comando com a saída da etapa anterior para ver a diferença na coluna CREATED BY.
Visualizar histórico com saída silenciosa
Nas etapas anteriores, você viu o histórico detalhado da imagem ubuntu, incluindo os comandos usados para criar cada camada. Às vezes, você pode estar interessado apenas nos IDs das imagens das camadas, sem todas as outras informações.
Para visualizar uma saída mais concisa que mostre apenas os IDs das imagens, você pode usar a flag -q ou --quiet com o comando docker history.
Vamos visualizar o histórico da imagem ubuntu no modo silencioso.
docker history -q ubuntu
A saída agora listará apenas os IDs das imagens das camadas, um por linha. Isso pode ser útil quando você precisa obter rapidamente uma lista de IDs de camadas para scripting ou outros propósitos.
Compare esta saída com as saídas anteriores para ver como a flag -q simplifica as informações exibidas.
Formatar a saída do histórico usando um template Go
Além dos formatos de saída padrão e silencioso, docker history permite que você formate a saída usando um template Go. Isso oferece controle preciso sobre quais informações são exibidas e como elas são apresentadas.
A flag --format é usada para especificar o template Go. Você pode acessar vários campos do histórico da imagem usando a sintaxe do template. Alguns campos comuns incluem .ID, .Created, .CreatedBy, .Size e .Comment.
Vamos tentar formatar a saída para mostrar apenas o ID da imagem e o comando usado para criar a camada, separados por uma tabulação.
docker history --format "{{.ID}}\t{{.CreatedBy}}" ubuntu
Neste template:
{{.ID}}refere-se ao ID da imagem da camada.\té um caractere de tabulação para separação.{{.CreatedBy}}refere-se ao comando usado para criar a camada.
Você pode experimentar diferentes campos e formatações para obter a saída desejada. Por exemplo, para incluir o tamanho:
docker history --format "{{.ID}}\t{{.Size}}\t{{.CreatedBy}}" ubuntu
Usar templates Go fornece uma maneira poderosa de extrair informações específicas do histórico da imagem para fins de scripting ou relatórios.
Mostrar histórico para uma plataforma específica
Imagens Docker podem ser construídas para diferentes arquiteturas e sistemas operacionais. Quando uma imagem está disponível para múltiplas plataformas, você pode querer visualizar o histórico para uma plataforma específica.
O comando docker history permite que você especifique a plataforma de destino usando a flag --platform. O formato para a plataforma é tipicamente os/architecture. Por exemplo, linux/amd64 ou linux/arm64.
Vamos visualizar o histórico da imagem ubuntu especificamente para a plataforma linux/amd64.
docker history --platform linux/amd64 ubuntu
A saída mostrará o histórico da imagem ubuntu construída para a arquitetura linux/amd64. Se a imagem não estiver disponível para a plataforma especificada, você poderá ver um erro ou um histórico diferente, dependendo de como a imagem foi construída.
Isso é particularmente útil ao trabalhar com imagens de múltiplas arquiteturas e você precisa inspecionar o processo de construção para um ambiente de destino específico.
Resumo
Neste laboratório, você aprendeu como usar o comando docker history para inspecionar as camadas de uma imagem Docker. Você começou puxando a imagem ubuntu e, em seguida, visualizando seu histórico, que exibe informações sobre cada camada, incluindo o ID da imagem, o tempo de criação, o comando usado para criá-la e seu tamanho. Isso fornece uma visão clara do processo de construção da imagem.
Em seguida, você explorou opções para modificar a saída de docker history. Você aprendeu como desabilitar a truncagem da saída usando a flag --no-trunc para visualizar os comandos completos usados para construir cada camada. Isso é crucial para entender as etapas exatas envolvidas na criação da imagem. O laboratório também aborda a visualização do histórico com saída silenciosa usando a flag -q para mostrar apenas os IDs das imagens, formatando a saída com um template Go para visualizações personalizadas e mostrando o histórico para uma plataforma específica usando a flag --platform.



