Управление плагинами Docker Engine

Быстрые ссылки
- Вся информация о плагинах
- Установка плагина
- Просмотр деталей плагина
- Включение и отключение плагинов
- Изменение настроек плагина
- Обновление плагинов
- Резюме
Что такое плагины
Плагины расширяют Docker Engine, добавляя возможности, которые слишком специфичны, чтобы входить в базовую поставку. Вы обычно не взаимодействуете с плагинами напрямую — вместо этого вы ссылаетесь на ресурсы, которые они предоставляют (сети, тома, драйверы логирования) при выполнении обычных команд Docker.
Определение: Плагин — это распределённый пакет, содержащий манифест и файловую систему, который интегрируется с Docker Engine и предоставляет один или несколько типов ресурсов.
Основные типы плагинов:
- Логирование — драйверы логирования для отправки логов в внешние системы.
- Сеть — плагины, добавляющие новые типы сетей и сетевой функционал.
- Том (volume) — плагины, добавляющие новые файловые системы и драйверы для персистентного хранения.
Существует множество плагинов от сообщества и вендоров. Их можно писать самостоятельно, используя публичный API плагинов и Go SDK.
Плагины распространяются через Docker Hub. Перейдите на страницу Explore → вкладка Plugins, чтобы просмотреть доступные решения; на момент написания в хабе доступно более 600 плагинов.

Если вы разработали собственный плагин, его можно загрузить в Docker Hub командой:
docker plugin pushПеред этим подготовьте пакет с помощью:
docker plugin createПодробнее по авторству плагинов см. документацию Docker.
Установка плагина
Плагины устанавливаются командой:
docker plugin install Пример:
docker plugin install store/example/example-plugin:versionПримечание: ссылки на плагины выглядят как ссылки на образы и начинаются с store/. В отличие от образов, указание тега версии обязательно — нельзя опустить версию, чтобы подтянуть latest автоматически.

На странице плагина можно скопировать готовую команду установки через кнопку Setup Instructions. При установке плагин обычно запрашивает разрешения на доступ к ресурсам хоста. Например, сетевому плагину нужен доступ к сети host.
При появлении запроса подтверждения введите y и нажмите Enter. Для неинтерактивной установки используйте флаг --grant-all-permissions, но учтите риск предоставления лишних привилегий при автоматических обновлениях.
Плагин по умолчанию автоматически включается после установки — это позволяет запускать скрипты предустановки. Чтобы установить плагин в отключённом состоянии, используйте флаг --disable.


Примеры команд
Установка последней доступной версии конкретного тега:
docker plugin install store/library/example:1.2.3Установка и отключение по умолчанию (требуется ручочное включение позже):
docker plugin install --disable store/library/example:1.2.3Установка без интерактивных запросов (доверие всем разрешениям):
docker plugin install --grant-all-permissions store/library/example:1.2.3Просмотр деталей плагина
Список установленных плагинов:
docker plugin lsБолее подробную информацию по конкретному плагину даёт docker plugin inspect — она выводит JSON с манифестом и метаданными:
docker plugin inspect Пример вывода содержит поле Settings с объектами Name и Settable, где перечислены настраиваемые параметры плагина.


Оффлайн‑установка (air‑gapped)
Docker CLI не поддерживает прямую установку плагинов в офлайн‑режиме. Обходной путь:
- На машине с доступом в сеть установите плагин стандартной командой.
- Найдите каталог с установленным плагином на этой машине:
/var/lib/docker/plugins/. - Скопируйте весь каталог плагина на офлайн‑хост (scp/rsync/portable storage).
- На офлайн‑хосте поместите папку в
/var/lib/docker/plugins/и убедитесь в правах владельца и режима. - Перезапустите сервис Docker (systemd или docker daemon) чтобы он обнаружил новый плагин.
Пример копирования:
scp -r /var/lib/docker/plugins/eccffc user@offline-host:/tmp/plugins/
ssh user@offline-host 'sudo mv /tmp/plugins/eccffc /var/lib/docker/plugins/ && sudo chown -R root:root /var/lib/docker/plugins/eccffc && sudo systemctl restart docker'Важно: такой метод переносит файловую часть плагина, но не обновляет метаданные на Docker Hub — управление версиями в офлайне ложится на администратора.

Включение и отключение плагинов
Статус плагина виден в колонке последней команды docker plugin ls. Отключённый плагин не загружается и фактически не оказывает влияния на систему.
Включение:
docker plugin enable Отключение:
docker plugin disable Если плагин используется контейнером или конфигурацией движка, отключение может быть запрещено. Флаг -f (force) принудительно отключит или удалит плагин, но это может привести к неожиданным остановкам контейнеров.
Удаление плагина:
docker plugin rm Удаление ведёт себя аналогично disable при столкновении с активным использованием — может потребоваться -f.
Изменение настроек плагина
Плагин может объявлять настраиваемые параметры. Для изменения используйте:
docker plugin set = Пример:
docker plugin set example-plugin log_level=debugСписок доступных настроек не выводится отдельной командой, но доступен в docker plugin inspect в поле Settings.
Обновление плагинов
Команда обновления:
docker plugin update Обновление скачает и установит последнюю версию плагина с Docker Hub. Если вы уже на последней версии, команда переустановит текущую. При появлении новых запрашиваемых разрешений будет показан диалог подтверждения, который можно пропустить флагом --grant-all-permissions.
Нет команды для массового обновления всех плагинов — обновления выполняются по одному. Подпишитесь на релизные уведомления от поставщиков плагинов и применяйте обновления согласно вашей политике обновлений и тестирования.
Критерии приёмки плагина
Перед вводом в продакшен проверьте плагин по следующему списку:
- Установлен и успешно включён в тестовой среде.
- Нет утечек информации и лишних привилегий при запуске.
- Работоспособность функций в сценариях отказа проверена (контролируемые рестарты).
- Совместимость с текущей версией Docker Engine подтверждена.
- Документация плагина изучена: доступные настройки, ограничения, known issues.
Безопасность и лучшие практики
Важно:
- Минимизируйте применение
--grant-all-permissionsбез ревью кода плагина. - Запускайте плагины в изолированных тестовых средах перед продакшеном.
- Мониторьте журналы и поведение системы после установки и обновлений.
- Ограничьте доступ к Docker Hub и управление плагинами только доверенным администраторам.
Security hardening — чеклист:
- Проверка подписей/поставщика плагина и репутации.
- Аудит исходного кода (если доступен) или тесты поведения в песочнице.
- Минимизация прав доступа к хосту (если возможно).
- Регулярные ревью списка установленных плагинов.
Роли и обязанности (кто что делает)
- DevOps/Системный админ: установка, обновление, мониторинг, обеспечение безопасности.
- Разработчик приложения: тестирование работоспособности в контейнерах, проверка совместимости API плагина.
- Вендор/Поставщик плагина: поддержка, релизы, документация и патчи.
Роль‑ориентированные чеклисты
Администратор:
- Проверить источник и репутацию плагина.
- Выполнить установку в тестовом кластере.
- Протестировать поведение при рестартах и обновлениях.
- Задокументировать процесс установки/отката.
Разработчик:
- Интеграционные тесты с плагином в CI.
- Обновление зависимостей и фиксация версий.
Менеджер по безопасности:
- Провести оценку прав и возможных векторов атаки.
- Настроить мониторинг и оповещения.
Метод выбора плагина — мини‑методология
- Определите потребность: сеть, логирование или тома.
- Поиск на Docker Hub по ключевым словам и фильтрации по обновлениям.
- Ознакомьтесь с документацией и примерами использования.
- Запустите в тестовой среде и выполните нагрузочное тестирование.
- Оцените безопасность (привилегии, исходники, активности).
- Утвердите и включите в релиз‑процесс.
Тесты и критерии приёмки (acceptance)
Тестовые кейсы:
- Установка без ошибок и успешный старт плагина.
- Функциональный тест ключевого сценария (создание тома/сеть/логирование).
- Тест на отказ: удаление/отключение плагина не вызывает краха критичных сервисов.
- Переустановка и откат на предыдущую версию сохраняют работоспособность.
Критерий успеха: все критичные тесты проходят в тестовой среде, риски документированы.
Откат и план инцидента
Runbook для отката:
- Определите идентификатор плагина (docker plugin ls).
- Если новый плагин нарушил работу, выполните:
docker plugin disable || docker plugin rm -f - Возвратите конфигурацию контейнеров к состоянию до установки (если требуется).
- При необходимости восстановите файлы плагина из резервной копии и перезапустите Docker.
- Проведите пост‑mortem и обновите процедуру проверки плагина.
Важно: прежде чем удалять плагин, убедитесь, что сервисы, зависящие от него, безопасно остановлены или переключены.
Рекомендации по совместимости и миграции
- Перед обновлением Docker Engine проверьте совместимость плагинов с новой версией.
- При миграции на другие хосты экспортируйте настройки плагинов и тома данных.
- Используйте фиксацию версий при установке (не оставляйте теги типа
latest).
Когда плагин не подходит (контрпример)
Если вам нужна лёгкая аутентификация логов в облако, а плагин требует доступа ко всем сетевым интерфейсам хоста и не поддерживает ограничение прав — это знак, что такой плагин не подходит для сред с повышенными требованиями безопасности.
Альтернативы:
- Использовать sidecar‑контейнеры для логирования, если внешний плагин слишком привилегирован.
- Настроить сетевые решения уровня хоста (CNI) вместо плагина, если требуется строгий контроль.
Decision tree для решения «устанавливать плагин или нет» (Mermaid)
flowchart TD
A[Нужна новая функциональность?] -->|Нет| B[Не устанавливать плагин]
A -->|Да| C[Доступен ли официальный/проверенный плагин?]
C -->|Нет| D[Рассмотреть разработку собственного решения или sidecar]
C -->|Да| E[Требуются ли привилегии хоста?]
E -->|Да| F[Оценить риски, провести аудит]
E -->|Нет| G[Установить в тестовую среду и протестировать]
F -->|Риски приемлемы| G
F -->|Риски неприемлемы| DПрактические примеры и сниппеты (cheat sheet)
Просмотр и состояние:
docker plugin ls
docker plugin inspect Установка с отключением по умолчанию:
docker plugin install --disable store/library/example:1.2.3Изменение настройки плагина:
docker plugin set example-plugin max_conn=100Обновление:
docker plugin update example-pluginУдаление:
docker plugin rm example-pluginЧастые проблемы и их решения
Проблема: плагин запрашивает чрезмерные привилегии. Решение: не использовать
--grant-all-permissions, запросить у вендора объяснение и/или выполнить аудит.Проблема: после копирования плагина в офлайн‑режиме он не отображается. Решение: проверьте права владельца файлов, целевую директорию и перезапустите Docker.
Проблема: отключение запрещено из‑за активного использования. Решение: определить зависимые контейнеры и аккуратно переключить их на альтернативы или остановить.
Локальные альтернативы и подводные камни (для региона и среды)
- Взаимодействие с частными реестрами: при использовании внутренних реестров проверьте, доступны ли нужные плагины в локальном реестре или требуется репликация из Docker Hub.
- Политики обновлений: централизованные политики могут блокировать автоматические обновления — планируйте проверку и тестирование заранее.
Краткое резюме
Docker плагины дают гибкий способ расширения функциональности движка: сети, тома и логирование. Управление выполняется через CLI; установка — по одной единице, обновление тоже. Для офлайн‑установки копируйте каталоги плагинов и перезапускайте Docker. Всегда тестируйте плагины в изолированной среде и оценивайте риски безопасности перед продакшен‑внедрением.
Ключевые примеры плагинов: Elastic Logging Plugin (потоковая отправка логов в Elastic), vSphere для Docker (использование VMWare vSphere для томов), Weave Net (мультикаст и шифрование сетевого трафика). Если нужного решения нет, используйте публичный API плагинов для разработки собственного.
Важно: перед установкой любого плагина создайте резервные копии критичных данных и документируйте все шаги установки и отката.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone