Как использовать команду docker manifest annotate для добавления информации о платформе

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как использовать команду docker manifest annotate для добавления информации о платформе в список манифестов Docker. Мы начнем с создания списка манифестов, который включает разные версии образа alpine для различных архитектур.

После создания списка манифестов вы научитесь добавлять аннотации к отдельным манифестам в списке, чтобы указать архитектуру, операционную систему, функции ОС, версию и варианты архитектуры. В конце вы проверите список аннотированных манифестов, чтобы убедиться, что информация о платформе была успешно добавлена. Этот процесс является важной частью эффективного создания и распространения многоархитектурных образов Docker.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") subgraph Lab Skills docker/inspect -.-> lab-555168{{"Как использовать команду docker manifest annotate для добавления информации о платформе"}} docker/pull -.-> lab-555168{{"Как использовать команду docker manifest annotate для добавления информации о платформе"}} docker/tag -.-> lab-555168{{"Как использовать команду docker manifest annotate для добавления информации о платформе"}} end

Создание списка манифестов

На этом этапе мы узнаем, как создать список манифестов. Список манифестов представляет собой индекс манифестов образов, который позволяет ссылаться на несколько образов для различных архитектур и операционных систем с помощью одного имени. Это особенно полезно для распространения многоархитектурных образов.

Перед созданием списка манифестов нам нужно иметь несколько образов. В этом лабораторном занятии мы будем использовать образ alpine для различных архитектур. Мы загрузим версии образа alpine для архитектур amd64 и arm64.

Сначала загрузите версию образа alpine для архитектуры amd64:

docker pull alpine:latest

Вы должны увидеть вывод, указывающий на то, что образ загружается и извлекается.

Далее загрузите версию образа alpine для архитектуры arm64. Обратите внимание, что нам нужно указать платформу при загрузке.

docker pull --platform arm64 alpine:latest

Снова вы увидите вывод, показывающий, что образ загружается.

Теперь, когда у нас есть образы, мы можем создать список манифестов. Мы будем использовать команду docker manifest create. Эта команда принимает имя списка манифестов, который вы хотите создать, а затем имена образов, которые вы хотите включить в список.

Создадим список манифестов с именем my-alpine-list, который включает образы alpine:latest (amd64) и alpine:latest (arm64).

docker manifest create my-alpine-list alpine:latest alpine:latest --amend --amend

Флаг --amend используется для добавления или обновления записей в списке манифестов. Мы используем его дважды здесь, потому что добавляем два образа.

После выполнения этой команды вы создали список манифестов. Однако в настоящее время этот список хранится только локально. На следующем этапе мы отправим его в реестр.

Аннотирование манифеста с указанием архитектуры и операционной системы

На этом этапе мы добавим аннотации к списку манифестов, который мы создали на предыдущем этапе. Аннотирование манифеста позволяет добавить к нему метаданные, такие как архитектура и операционная система, для которых предназначен образ. Эта информация является важной для Docker, чтобы выбрать правильный образ из списка манифестов на основе среды, в которой запускается контейнер.

Мы будем использовать команду docker manifest annotate для добавления информации о архитектуре и операционной системе к записям в нашем списке манифестов my-alpine-list. Команда принимает имя списка манифестов, имя образа в списке и флаги аннотации.

Сначала добавим аннотацию к образу alpine:latest, соответствующему архитектуре amd64 и операционной системе linux.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux

Эта команда сообщает Docker, что образ alpine:latest в списке манифестов my-alpine-list предназначен для архитектуры amd64 и операционной системы linux.

Далее мы добавим аннотацию к образу alpine:latest, соответствующему архитектуре arm64 и операционной системе linux.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux

Эта команда добавляет аннотацию к другому образу alpine:latest в списке, указывая, что он предназначен для архитектуры arm64 и операционной системы linux.

Добавляя аннотации с информацией о архитектуре и операционной системе в список манифестов, мы позволяем Docker автоматически выбирать правильный образ, когда пользователь загружает my-alpine-list на системе с определенной архитектурой.

Аннотирование манифеста с указанием особенностей и версии операционной системы

На этом этапе мы продолжим аннотирование нашего списка манифестов, добавив информацию о особенностях и версии операционной системы. Хотя для базовых образов, таких как Alpine, это менее распространено, эти аннотации могут быть полезны для образов, которые требуют определенных возможностей или версий операционной системы.

Команда docker manifest annotate позволяет нам указывать особенности операционной системы с помощью флага --os-features и версию операционной системы с помощью флага --os-version.

Предположим, для демонстрации, что наш образ Alpine для архитектуры amd64 требует определенной особенности операционной системы (например, fips) и создан для определенной версии операционной системы (например, 1.0). Мы добавим аннотацию с этой информацией к записи для amd64 в нашем списке my-alpine-list.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux --os-features fips --os-version 1.0

Эта команда обновляет аннотацию для записи amd64 в my-alpine-list, добавляя указанную особенность и версию операционной системы.

Аналогично, предположим, что наш образ Alpine для архитектуры arm64 требует другой особенности операционной системы (например, selinux) и создан для другой версии операционной системы (например, 2.0). Мы добавим аннотацию к записи для arm64.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --os-features selinux --os-version 2.0

Эта команда обновляет аннотацию для записи arm64, добавляя ее специфические особенность и версию операционной системы.

Добавляя эти аннотации, вы предоставляете более подробную информацию о требованиях и совместимости образа, которую Docker или другие инструменты могут использовать при выборе образа из списка манифестов.

Аннотирование манифеста с указанием варианта архитектуры

На этом этапе мы добавим информацию о варианте архитектуры в наш список манифестов. Варианты архитектуры используются для различения между разными версиями или реализациями одной и той же архитектуры. Например, архитектура arm имеет варианты, такие как v6, v7 и v8.

Мы используем команду docker manifest annotate с флагом --variant для указания варианта архитектуры.

Предположим, что наш образ Alpine для архитектуры arm64 специально создан для варианта v8 архитектуры arm64. Мы добавим аннотацию с этой информацией к записи для arm64 в нашем списке my-alpine-list.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --variant v8

Эта команда обновляет аннотацию для записи arm64 в my-alpine-list, добавляя информацию о варианте v8.

Для архитектуры amd64 варианты встречаются реже, но вы можете указать один, если это необходимо. В рамках этого практического занятия мы не будем добавлять вариант к записи для amd64.

Добавляя информацию о варианте архитектуры, вы предоставляете еще более конкретные сведения о совместимости образа, что позволяет Docker выбрать наиболее подходящий образ для данной системы.

Проверка аннотированного списка манифестов

На этом последнем этапе мы проверим созданный и аннотированный список манифестов, чтобы увидеть добавленную информацию. Команда docker manifest inspect позволяет просмотреть детали списка манифестов, включая содержащиеся в нем манифесты и их аннотации.

Для проверки нашего списка манифестов my-alpine-list выполните следующую команду:

docker manifest inspect my-alpine-list

Эта команда выведет JSON-документ, представляющий список манифестов. Вы должны увидеть записи как для образов amd64, так и для arm64, а также аннотации, добавленные на предыдущих этапах, такие как architecture, os, os.features, os.version и variant.

Найдите в выводе массив manifests. Каждый объект в этом массиве представляет образ, включенный в список манифестов. Вы должны найти поле platform в каждом объекте манифеста, которое содержит информацию о architecture, os, os.features и os.version. Для записи arm64 вы также должны увидеть поле variant.

Проверка списка манифестов - это хороший способ убедиться, что аннотации были применены правильно и что список манифестов настроен как вы задумывали.

Резюме

В этом практическом занятии мы научились создавать список манифестов Docker, который служит индексом для нескольких манифестов образов, позволяя распространять многоархитектурные образы под одним именем. Мы начали с загрузки образов alpine для архитектур amd64 и arm64. Затем мы использовали команду docker manifest create с флагом --amend для создания локального списка манифестов с именем my-alpine-list, включающего загруженные образы.

После создания списка манифестов мы изучили, как аннотировать отдельные манифесты в списке с помощью команды docker manifest annotate. Этот процесс включал добавление важных метаданных, таких как информация об архитектуре и операционной системе. Мы конкретно показали, как аннотировать манифест с деталями об архитектуре и операционной системе, а также рассмотрели добавление информации о функциях операционной системы, версии и варианте архитектуры. Наконец, мы научились проверять аннотированный список манифестов, чтобы убедиться в правильности добавленных метаданных и гарантировать, что список точно отражает характеристики включенных в него образов.