Как управлять плагинами 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.