Introdução
Neste laboratório, você aprenderá como usar o comando docker manifest annotate para adicionar informações de plataforma a uma lista de manifestos Docker. Começaremos criando uma lista de manifestos que inclui diferentes versões de arquitetura da imagem alpine.
Após a criação da lista de manifestos, você praticará a anotação de manifestos individuais dentro da lista para especificar arquitetura, sistema operacional, recursos do sistema operacional, versão e variantes de arquitetura. Finalmente, você inspecionará a lista de manifestos anotada para verificar as informações de plataforma adicionadas. Este processo é essencial para construir e distribuir imagens Docker de múltiplas arquiteturas de forma eficaz.
Criar uma lista de manifestos
Nesta etapa, aprenderemos como criar uma lista de manifestos. Uma lista de manifestos é um índice de manifestos de imagem, permitindo que você referencie múltiplas imagens para diferentes arquiteturas e sistemas operacionais com um único nome. Isso é particularmente útil para distribuir imagens de múltiplas arquiteturas.
Antes de criar uma lista de manifestos, precisamos ter algumas imagens disponíveis. Para este laboratório, usaremos a imagem alpine para diferentes arquiteturas. Vamos baixar as versões amd64 e arm64 da imagem alpine.
Primeiro, baixe a versão amd64 da imagem alpine:
docker pull alpine:latest
Você deve ver uma saída indicando que a imagem está sendo baixada e extraída.
Em seguida, baixe a versão arm64 da imagem alpine. Observe que precisamos especificar a plataforma para este download.
docker pull --platform arm64 alpine:latest
Novamente, você verá a saída mostrando a imagem sendo baixada.
Agora que temos as imagens, podemos criar uma lista de manifestos. Usaremos o comando docker manifest create. Este comando recebe o nome da lista de manifestos que você deseja criar, seguido pelos nomes das imagens que você deseja incluir na lista.
Vamos criar uma lista de manifestos chamada my-alpine-list que inclui as imagens alpine:latest (amd64) e alpine:latest (arm64).
docker manifest create my-alpine-list alpine:latest alpine:latest --amend --amend
A flag --amend é usada para adicionar ou atualizar entradas na lista de manifestos. Usamos ela duas vezes aqui porque estamos adicionando duas imagens.
Após executar este comando, você criou uma lista de manifestos. No entanto, esta lista é armazenada apenas localmente por enquanto. Em uma etapa posterior, vamos enviá-la para um registro.
Anotar um manifesto com arquitetura e SO
Nesta etapa, anotaremos a lista de manifestos que criamos na etapa anterior. Anotar um manifesto permite que você adicione metadados a ele, como a arquitetura e o sistema operacional para os quais a imagem se destina. Essa informação é crucial para que o Docker selecione a imagem correta de uma lista de manifestos com base no ambiente em que o contêiner está sendo executado.
Usaremos o comando docker manifest annotate para adicionar informações de arquitetura e SO às entradas em nossa lista de manifestos my-alpine-list. O comando recebe o nome da lista de manifestos, o nome da imagem dentro da lista e as flags de anotação.
Primeiro, vamos anotar a imagem alpine:latest que corresponde à arquitetura amd64 e ao sistema operacional linux.
docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux
Este comando informa ao Docker que a imagem alpine:latest no manifesto my-alpine-list é para a arquitetura amd64 e o sistema operacional linux.
Em seguida, anotaremos a imagem alpine:latest que corresponde à arquitetura arm64 e ao sistema operacional linux.
docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux
Este comando anota a outra imagem alpine:latest na lista, especificando que ela é para a arquitetura arm64 e o sistema operacional linux.
Ao anotar a lista de manifestos com informações de arquitetura e SO, tornamos possível para o Docker selecionar automaticamente a imagem correta quando um usuário faz o pull de my-alpine-list em um sistema com uma arquitetura específica.
Anotar um manifesto com recursos do SO e versão
Nesta etapa, continuaremos a anotar nossa lista de manifestos adicionando informações sobre recursos e versão do SO. Embora menos comum para imagens básicas como Alpine, essas anotações podem ser úteis para imagens que exigem capacidades ou versões específicas do sistema operacional.
O comando docker manifest annotate nos permite especificar recursos do SO usando a flag --os-features e a versão do SO usando a flag --os-version.
Vamos supor, para fins de demonstração, que nossa imagem Alpine amd64 requer um recurso específico do SO (por exemplo, fips) e é construída para uma versão específica do SO (por exemplo, 1.0). Anotaremos a entrada amd64 em nossa my-alpine-list com esta informação.
docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux --os-features fips --os-version 1.0
Este comando atualiza a anotação para a entrada amd64 em my-alpine-list, adicionando o recurso e a versão do SO especificados.
Da mesma forma, vamos supor que nossa imagem Alpine arm64 requer um recurso diferente do SO (por exemplo, selinux) e é construída para uma versão diferente do SO (por exemplo, 2.0). Anotaremos a entrada arm64.
docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --os-features selinux --os-version 2.0
Este comando atualiza a anotação para a entrada arm64, adicionando seu recurso e versão específicos do SO.
Ao adicionar essas anotações, você fornece informações mais detalhadas sobre os requisitos e a compatibilidade da imagem, que podem ser usadas pelo Docker ou outras ferramentas ao selecionar uma imagem da lista de manifestos.
Anotar um manifesto com variante de arquitetura
Nesta etapa, adicionaremos informações de variante de arquitetura à nossa lista de manifestos. As variantes de arquitetura são usadas para distinguir entre diferentes versões ou implementações da mesma arquitetura. Por exemplo, a arquitetura arm tem variantes como v6, v7 e v8.
Usamos o comando docker manifest annotate com a flag --variant para especificar a variante da arquitetura.
Vamos supor que nossa imagem Alpine arm64 seja especificamente construída para a variante v8 da arquitetura arm64. Anotaremos a entrada arm64 em nossa my-alpine-list com esta informação.
docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --variant v8
Este comando atualiza a anotação para a entrada arm64 em my-alpine-list, adicionando a informação da variante v8.
Para a arquitetura amd64, as variantes são menos comuns, mas você pode especificar uma, se necessário. Para este laboratório, não adicionaremos uma variante à entrada amd64.
Ao adicionar informações de variante de arquitetura, você fornece detalhes ainda mais específicos sobre a compatibilidade da imagem, permitindo que o Docker selecione a imagem mais apropriada para um determinado sistema.
Inspecionar a lista de manifestos anotados
Nesta etapa final, inspecionaremos a lista de manifestos que criamos e anotamos para ver as informações que adicionamos. O comando docker manifest inspect permite que você visualize os detalhes de uma lista de manifestos, incluindo os manifestos que ela contém e suas anotações.
Para inspecionar nossa lista de manifestos my-alpine-list, execute o seguinte comando:
docker manifest inspect my-alpine-list
Este comando exibirá um documento JSON representando a lista de manifestos. Você deve ver entradas para as imagens amd64 e arm64, juntamente com as anotações que adicionamos nas etapas anteriores, como architecture, os, os.features, os.version e variant.
Procure o array manifests na saída. Cada objeto dentro deste array representa uma imagem incluída na lista de manifestos. Você deve ser capaz de encontrar o campo platform dentro de cada objeto de manifesto, que contém as informações de architecture, os, os.features e os.version. Para a entrada arm64, você também deve ver o campo variant.
Inspecionar a lista de manifestos é uma boa maneira de verificar se suas anotações foram aplicadas corretamente e se a lista de manifestos está configurada conforme o esperado.
Resumo
Neste laboratório, aprendemos como criar uma lista de manifestos Docker, que serve como um índice para múltiplos manifestos de imagem, permitindo a distribuição de imagens de multi-arquitetura sob um único nome. Começamos puxando imagens alpine para as arquiteturas amd64 e arm64. Em seguida, usamos o comando docker manifest create com a flag --amend para construir uma lista de manifestos local chamada my-alpine-list, incorporando as imagens puxadas.
Após a criação da lista de manifestos, exploramos como anotar manifestos individuais dentro da lista usando o comando docker manifest annotate. Este processo envolveu a adição de metadados cruciais, como informações de arquitetura e sistema operacional. Demonstramos especificamente como anotar um manifesto com detalhes de arquitetura e SO, e exploramos ainda mais a adição de recursos do SO, versão e informações de variante de arquitetura. Finalmente, aprendemos como inspecionar a lista de manifestos anotada para verificar os metadados adicionados, garantindo que a lista reflita com precisão as características das imagens incluídas.



