Como usar o comando docker buildx history logs para visualizar os logs de construção

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker buildx history logs para visualizar os logs de suas construções Docker. Você começará construindo uma imagem Docker e examinando seu histórico para entender o processo de construção e identificar a referência da construção.

Em seguida, você usará a referência da construção para recuperar e visualizar os logs detalhados de uma construção específica. Finalmente, você explorará como visualizar esses logs de construção com diferentes tipos de saída de progresso, fornecendo insights sobre a execução da construção e a solução de problemas potenciais.

Construir uma imagem e visualizar seu histórico

Nesta etapa, você aprenderá como construir uma imagem Docker a partir de um Dockerfile e visualizar seu histórico. O histórico mostra as camadas que compõem a imagem e os comandos usados para criar cada camada.

Primeiro, vamos criar um Dockerfile simples em seu diretório ~/project. Este Dockerfile criará uma imagem baseada na imagem ubuntu e instalará o pacote curl.

cd ~/project
nano Dockerfile

Adicione o seguinte conteúdo ao Dockerfile:

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl

Salve o arquivo e saia do editor (Ctrl+X, Y, Enter).

Agora, vamos construir a imagem Docker usando o comando docker build. Vamos marcar a imagem com o nome my-ubuntu-curl e a tag latest. O . no final do comando indica que o Dockerfile está no diretório atual.

docker build -t my-ubuntu-curl:latest .

Você verá uma saída indicando o processo de construção, mostrando cada etapa definida no Dockerfile sendo executada.

Após a conclusão da construção, você pode visualizar o histórico da imagem usando o comando docker history.

docker history my-ubuntu-curl:latest

A saída mostrará uma tabela com informações sobre cada camada, incluindo o ID da camada, tempo de criação, tamanho e o comando usado para criá-la. Este histórico é útil para entender como uma imagem foi construída e para fins de depuração.

Encontrar a referência da construção no histórico

Na etapa anterior, você construiu uma imagem Docker e visualizou seu histórico. A saída do histórico inclui uma coluna "BUILD REFERENCE" (Referência da Construção). Essa referência é um identificador único para o processo de construção que criou a imagem. É diferente do ID da imagem e está especificamente relacionado à própria construção, não às camadas de imagem resultantes.

Vamos olhar o histórico novamente para identificar a referência da construção.

docker history my-ubuntu-curl:latest

Na saída, procure a linha correspondente ao processo de construção. Geralmente, será a primeira linha (excluindo as camadas da imagem base) e terá um valor na coluna "BUILD REFERENCE". Esse valor é uma longa sequência de caracteres.

Por exemplo, a saída pode ser semelhante a esta (os valores exatos serão diferentes):

IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT   BUILD REFERENCE
a1b2c3d4e5f6   2 hours ago    /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
g7h8i9j0k1l2   2 hours ago    /bin/sh -c #(nop) ADD file:abcdef1234567890...   73.9MB
m3n4o5p6q7r8   2 hours ago    /bin/sh -c apt-get update && apt-get install...   30MB      buildkit.dockerfile.v0   buildkit:abcdef1234567890abcdef1234567890

Neste exemplo, a referência da construção é buildkit:abcdef1234567890abcdef1234567890. Observe que a referência da construção geralmente começa com buildkit: seguido por um identificador único.

Você precisará dessa referência da construção na próxima etapa para visualizar os logs do processo de construção específico. Copie a referência da construção da sua saída.

Visualizar os logs de uma construção específica usando sua referência

Na etapa anterior, você identificou a referência da construção a partir do histórico da imagem. Essa referência da construção permite que você visualize os logs detalhados desse processo de construção específico. Isso é particularmente útil para depurar falhas de construção ou entender a saída exata gerada durante a construção.

Para visualizar os logs de uma construção específica, você usa o comando docker buildx logs seguido pela referência da construção. Lembre-se de substituir YOUR_BUILD_REFERENCE pela referência da construção real que você encontrou na etapa anterior.

docker buildx logs YOUR_BUILD_REFERENCE

Por exemplo, se sua referência da construção fosse buildkit:abcdef1234567890abcdef1234567890, o comando seria:

docker buildx logs buildkit:abcdef1234567890abcdef1234567890

A execução deste comando exibirá a saída completa do processo de construção, incluindo a saída de cada instrução RUN em seu Dockerfile. Você verá a saída de apt-get update e apt-get install -y curl conforme foram executados durante a construção da imagem.

Isso fornece uma visão muito mais detalhada do processo de construção em comparação com o resumo mostrado durante o comando docker build.

Visualizar logs com diferentes tipos de saída de progresso

Nesta etapa, você explorará diferentes maneiras de visualizar a saída do progresso da construção ao construir uma imagem Docker. O comando docker build oferece várias opções para controlar como o progresso da construção é exibido.

Por padrão, docker build usa uma saída de progresso que mostra o status de cada etapa à medida que ela é executada. Vamos reconstruir a imagem para ver essa saída padrão novamente.

docker build -t my-ubuntu-curl:latest .

Você observará a saída familiar mostrando etapas como "Step 1/2", "Step 2/2" e a saída do comando RUN.

Agora, vamos tentar um tipo diferente de saída de progresso usando a flag --progress. O tipo de saída plain exibe o processo de construção em um formato mais verbose, linha por linha, o que pode ser útil para ver os comandos exatos sendo executados e sua saída sem a barra de progresso.

docker build --progress=plain -t my-ubuntu-curl:latest .

Compare a saída deste comando com a saída padrão. Você verá um log mais detalhado de cada ação realizada durante a construção.

Outro tipo de saída de progresso útil é tty. Este é o padrão ao construir interativamente em um terminal e fornece uma barra de progresso dinâmica. No entanto, especificá-lo explicitamente pode ser útil em certos cenários de script.

docker build --progress=tty -t my-ubuntu-curl:latest .

Você deve ver a barra de progresso interativa novamente, semelhante à construção inicial.

Compreender esses diferentes tipos de saída de progresso permite que você escolha a melhor maneira de monitorar suas construções Docker, seja você precisar de um resumo conciso ou logs detalhados para depuração.

Resumo

Neste laboratório, você aprendeu como construir uma imagem Docker a partir de um Dockerfile e visualizar seu histórico usando os comandos docker build e docker history. Você criou um Dockerfile simples, construiu uma imagem com a tag my-ubuntu-curl:latest e examinou a saída do histórico para entender as camadas e os comandos envolvidos no processo de construção.

Em seguida, você aprendeu como identificar a referência única da construção a partir da saída de docker history. Essa referência da construção é crucial para acessar informações específicas relacionadas à construção, como os logs da construção, que você explorará nas etapas subsequentes.