Что такое ярлыки Docker и когда их использовать? — CloudSavvy ИТ

Фотография логотипа Docker на здании Майкл Ви / Shutterstock.com

Метки Docker позволяют прикреплять произвольные метаданные к вашим контейнерам, изображениям, томам и другим ресурсам. Вы можете пометить свои объекты Docker информацией, относящейся к вашей организации, рабочему процессу или цепочке инструментов.

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

Поддерживаемые типы объектов

Вы можете использовать метки со следующими объектами Docker:

  • Контейнеры
  • Изображений
  • Объемы
  • Сети
  • Экземпляры демонов
  • Узлы и сервисы Swarm

Каждый тип объекта поддерживает метки как часть своей группы команд CLI. Неважно, используете ли вы образ докера, сеть докеров или том докера.

Добавление ярлыков

Ярлыки добавляются во время создания объекта. Их нельзя изменить после первоначального создания; вам необходимо удалить объект и заменить его новой версией, если необходимы изменения. Исключение составляют метки, назначаемые узлам и службам Docker Swarm, которые можно динамически обновлять в любое время.

Флаг —label используется для установки меток. Каждая метка представляет собой пару «ключ-значение», в которой ключ и значение разделены знаком равенства (=):

docker run my-image: latest —label demo-label = example-value

Ключи меток могут содержать буквенно-цифровые символы нижнего регистра, точки (.) И дефисы (-). Они должны начинаться и заканчиваться буквенно-цифровым символом. Соблюдаются правила нотации DNS, поэтому использование нескольких последовательных точек и дефисов запрещено.

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

Лучшие практики для этикеток

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

docker run my-image: latest —label = com.example.demo-label = example-value

Эта практика помогает избежать конфликтов именования ключей, когда метки устанавливаются инструментами в вашей системе сборки. Многие средства автоматизации добавляют свои собственные метки к объектам Docker, которые они создают, для облегчения отслеживания и управления. Docker не поддерживает повторяющиеся ключи меток, и использование одного и того же ключа дважды приводит к использованию значения последнего повторения.

Docker резервирует некоторые пространства имен для внутреннего использования CLI. Вы не должны использовать префикс ключей в любом из следующих пространств имен:

  • com.docker. *
  • io.docker. *
  • org.dockerproject. *

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

Проверка этикеток

Команда docker inspect включает список назначенных меток как часть своего вывода. Это работает с контейнерами и изображениями, идентифицированными по идентификатору или имени. Доступ к меткам, используемым с сетями и томами, осуществляется с помощью подкоманды inspect этих групп CLI, например docker network inspect my-network.

Вывод docker inspect может быть трудно переварить как есть. Раздел меток будет похоронен в JSON, отправленном на ваш терминал. Вы можете использовать флаг —format для изолированного просмотра меток. Если выбрать JSON в качестве формата вывода и пропустить полученную строку через jq, вы получите раскрашенный список меток для удобства чтения.

докер проверяет мой-контейнер —format = «{{json .Config.Labels}}» | jq

Фильтрация списков объектов

Команды Docker CLI, такие как docker ps и образы докеров, которые создают список объектов, можно отфильтровать, чтобы отображались только элементы с заданным набором меток.

Вот как показать контейнеры с демонстрационной меткой, установленной для примера:

docker ps —filter «label = com.example.demo = example»

Если вы хотите выполнить фильтрацию по нескольким меткам, повторите флаг —filter:

docker ps —filter «label = a = 1» —filter «label = b = 2»

Иногда может потребоваться показать все объекты с заданной меткой. Укажите имя ключа метки, но для этого опустите значение:

docker ps —filter «label = com.example.demo»

Любой контейнер с меткой com.example.demo будет включен в вывод команды, независимо от значения, присвоенного метке.

Этикетка Технические характеристики

В Спецификация контейнеров OCI определяет несколько обычных меток, которые инкапсулируют распространенные варианты использования образов контейнеров. Они существуют в пространстве имен org.opencontainers.image.

  • org.opencontainers.image.created — время создания изображения.
  • org.opencontainers.image.url — URL для получения информации об изображении.
  • org.opencontainers.image.version — Версия основного ПО внутри контейнера (нет версия изображения).
  • org.opencontainers.image.licenses — информация о лицензировании контейнера.
  • org.opencontainers.image.title — удобочитаемое имя контейнера.

Вы можете просмотреть полный список меток OCI в Технические характеристики. Если вы обнаружите, что добавляете какую-либо из этих сведений к своим изображениям, рекомендуется использовать метки OCI. Они помогают сделать ваше изображение совместимым с инструментами сообщества, которые отображают и фильтруют эти метаданные.

Добавление меток во время сборки изображения

Вы можете установить метки во время сборки образа, используя инструкцию LABEL в вашем Dockerfile. Ярлыки будут применены к изображение, а не в контейнеры, запущенные из него. Изображения также наследуют любые ярлыки, определенные их родителями. Слой, который устанавливает метку, которая уже была создана предыдущим, переопределит исходное значение.

LABEL com.example.demo = example com.example.example = demo LABEL com.example.image = service

Вы можете объединить несколько меток в одну инструкцию LABEL или повторить команду несколько раз. Влияние будет одинаковым, несмотря на то, что все ярлыки в конечном итоге будут включены в ваше изображение.

Резюме

Ярлыки — это механизм для добавления ваших собственных метаданных к вашим объектам Docker. Хотя метки намеренно произвольны и открыты, вы должны стараться следовать спецификациям OCI при настройке часто используемых полей.

Установка меток позволяет вам прикреплять любую дополнительную информацию, которая может иметь отношение к объекту. Определение набора ссылочных меток в вашей организации позволит любому запускать docker inspect для получения важных сведений о контейнере вместо перекрестных ссылок на внешнюю документацию. Ярлыки также позволяют фильтровать вывод Docker CLI, обеспечивая более удобное управление.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *