Поиск по сайту:

Как управлять плагинами Docker Engine


Docker Engine поддерживает систему плагинов, которая позволяет добавлять дополнительные функции в среду выполнения контейнера. Плагины для новых драйверов хранения, сетевых стеков и систем ведения журналов доступны бесплатно.

Современные версии Docker Engine включают в себя все необходимое для управления плагинами в CLI. В этом руководстве мы сосредоточимся на этой «управляемой» системе плагинов. Вы должны вручную устанавливать и поддерживать плагины, использующие устаревшую систему плагинов.

Все о плагинах

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

Существует три основных типа плагинов:

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

Также доступны плагины с функциями, которые выходят за рамки этих основных областей. Плагины создаются поставщиками сообщества; вы можете написать свой собственный, используя общедоступный API плагинов и Go SDK.

Плагины распространяются через Docker Hub. Вы можете найти доступные плагины, перейдя на страницу «Обзор» и выбрав вкладку «Плагины» вверху. В настоящее время доступно более 600 плагинов.

Если вы пишете собственный подключаемый модуль, вы можете отправить его в Docker Hub с помощью команды docker plugin push. Это работает аналогично отправке образа в общедоступный реестр. Сначала вам нужно запустить docker plugin create, чтобы преобразовать манифест и файловую систему вашего плагина в пакет, готовый к отправке. Вы можете получить больше информации о разработке плагинов в документации Docker.

Установка плагина

Плагины устанавливаются командой docker plugin install. Это принимает имя плагина Docker Hub в качестве аргумента:

docker plugin install store/example/example-plugin:version

Ссылки на плагины выглядят как ссылки на изображения, которые начинаются с store/. Те же принципы тегирования применяются при указании версии подключаемого модуля для установки. В отличие от изображений, вы не можете пропустить версию, чтобы автоматически получить тег latest.

Вы можете найти номер версии плагина и скопировать готовую команду установки, нажав кнопку «Инструкции по установке» на его странице Docker Hub. Бесплатные плагины позволят вам перейти к новому экрану с обычным полем для копирования и вставки в правом верхнем углу. Запустите команду в своем терминале, чтобы начать установку плагина.

Плагины обычно запрашивают доступ к привилегиям хоста, чтобы они могли обеспечить свою функциональность. Например, сетевой плагин должен иметь доступ к сети host Docker, чтобы он мог подключать новые ресурсы. Подтвердите запрос на разрешение, введя y и нажав клавишу ввода, чтобы завершить установку. Вы можете пропустить приглашение, добавив флаг --grant-all-permissions в команду install; это идеально для неинтерактивных установок, но есть риск непреднамеренного предоставления разрешений, если подключаемый модуль обновляется с новыми возможностями.

Плагины включаются автоматически после установки. Включение подключаемого модуля позволяет выполнять предустановочные сценарии. Используйте флаг --disable, чтобы отключить плагин по умолчанию, оставив его инертным, пока он не будет активирован вручную позже.

Просмотр сведений о плагине

После установки ваш плагин будет отображаться при запуске docker plugin ls:

docker plugin ls

Более подробную информацию об отдельном плагине можно получить с помощью команды docker inspect. Он принимает идентификатор или тег плагина и отображает подробный JSON, описывающий манифест плагина:

docker inspect eccffc

Автономная установка

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

Вы найдете установленные плагины в каталоге /var/lib/docker/plugins на вашем хосте. Каждый плагин получает свой собственный подкаталог, названный его идентификатором. Эти идентификаторы отображаются в выводе команды docker plugin ls.

Включение и отключение плагинов

Плагины могут быть включены или отключены. Вы увидите текущий статус в последнем столбце вывода ls. Отключенный плагин не будет загружен, поэтому он будет действовать так, как будто он не установлен.

Используйте команды docker plugin enable и docker plugin disable, чтобы изменить статус плагина. Укажите идентификатор одного из установленных плагинов в качестве единственного аргумента команды:

docker plugin enable eccffc

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

Плагины удаляются командой docker plugin rm. Укажите идентификатор или имя плагина, чтобы полностью удалить его из Docker. rm ведет себя так же, как disable при обработке активно используемых подключаемых модулей и последующем принудительном удалении.

Изменение настроек плагина

Система плагинов Docker включает в себя встроенный механизм, позволяющий авторам плагинов предоставлять настраиваемые параметры. Как пользователь, вы можете изменить эти настройки с помощью команды docker plugin set:

docker plugin set example-plugin setting-key=new-value

Замените example-plugin идентификатором или названием подключаемого модуля, на который вы ориентируетесь. Значение параметра плагина setting-key будет обновлено до new-value.

Доступные настройки, естественно, варьируются от плагина к плагину. Они должны быть задокументированы в описании плагина на Docker Hub. В интерфейсе командной строки Docker нет встроенной команды для просмотра всех доступных настроек плагина, но они отображаются в выводе docker plugin inspect. Найдите поле Settings в JSON-представлении плагина; он будет содержать объекты с полями Name и Settable для параметров, которые вы можете изменить через интерфейс командной строки.

Обновление ваших плагинов

Плагины обновляются с помощью команды docker plugin update. Как и другие команды, она принимает идентификатор плагина или тег в качестве аргумента.

При обновлении плагина будет загружена и установлена последняя версия, доступная на Docker Hub. Если вы уже используете новейшую версию, команда переустановит текущую версию. Вам будет предложено предоставить плагину любые новые привилегии, которые ему требуются. Флаг --grant-all-permissions используется для пропуска приглашения в средах, где интерактивный ввод невозможен.

Невозможно обновить все плагины в вашей системе одной командой. Лучше всего подписаться на объявления о выпуске от поставщиков ваших плагинов, а затем применять обновления к вашей установке по мере их появления. Это обеспечит безопасность и поддержку ваших плагинов.

Краткое содержание

Экосистема плагинов Docker позволяет добавлять дополнительные функции в Docker Engine. Плагины находятся на Docker Hub и могут быть установлены с вашего терминала. CLI включает средство обновления плагинов, но оно работает только с одним плагином за раз, а не со всем вашим каталогом.

Теперь вы знаете, как использовать плагины и управлять ими, вы можете начать просматривать Docker Hub, чтобы найти варианты для улучшения вашего рабочего процесса. Подключаемый модуль Elastic Logging передает журналы контейнера Docker в кластер эластичного стека, vSphere для Docker позволяет использовать хранилище VMWare vSphere для постоянных томов, а Weave Net обеспечивает многоадресную зашифрованную сеть в Docker. Если вы не видите, что вам нужно, используйте API-интерфейс плагина, чтобы попробовать написать собственное решение, которое вы можете опубликовать для более широкого сообщества через Hub.