Как использовать команду docker plugin disable для отключения плагина

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

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

Введение

В этом лабораторном занятии (LabEx) вы научитесь управлять плагинами Docker, сосредоточившись на команде docker plugin disable. Вы начнете с перечисления текущих установленных плагинов, чтобы понять их статус. Затем вы потренируетесь отключать плагин и наблюдать за эффектом этого действия.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/ls -.-> lab-555188{{"Как использовать команду docker plugin disable для отключения плагина"}} docker/rm -.-> lab-555188{{"Как использовать команду docker plugin disable для отключения плагина"}} docker/volume -.-> lab-555188{{"Как использовать команду docker plugin disable для отключения плагина"}} end

Перечисление установленных плагинов

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

Для перечисления установленных плагинов вы можете использовать команду docker plugin ls. Эта команда покажет вам список всех установленных плагинов, а также их статус (включен или отключен) и другую соответствующую информацию.

Выполним команду, чтобы увидеть установленные плагины.

docker plugin ls

Вы должны увидеть вывод, похожий на этот, хотя конкретные перечисленные плагины могут отличаться в зависимости от вашей среды:

ID    NAME    DESCRIPTION    ENABLED

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

Столбцы вывода:

  • ID: Уникальный идентификатор плагина.
  • NAME: Название плагина.
  • DESCRIPTION: Краткое описание функциональности плагина.
  • ENABLED: Показывает, включен ли плагин в настоящее время (true) или отключен (false).

Понимание, какие плагины установлены и какой у них статус, является первым шагом в управлении плагинами Docker. В следующих шагах вы научитесь отключать и управлять этими плагинами.

Отключение плагина

На этом этапе вы научитесь отключать установленный плагин Docker. Отключение плагина останавливает его работу и делает его функциональность недоступной для Docker.

Для отключения плагина используйте команду docker plugin disable, за которой следует имя или идентификатор (ID) плагина, который вы хотите отключить.

Поскольку в этой среде по умолчанию не установлено ни одного плагина, мы сначала установим простой плагин, чтобы продемонстрировать команду отключения. Мы установим плагин vieux/sshfs, который позволяет монтировать удаленные SSH - файловые системы как тома Docker.

Сначала установим плагин. Эта команда загрузит образ плагина и включит его.

docker plugin install vieux/sshfs

Вам будет предложено подтвердить возможности плагина. Введите y и нажмите Enter, чтобы продолжить.

Plugin "vieux/sshfs" is requesting the following privileges:
 - network: [host]
 - mount: [/dev/fuse]
 - allow-host-dnsserver: true
 - allow-other: true
 - capability: [CAP_SYS_ADMIN]
Do you grant the plugin these privileges? [y/n] y

После завершения установки вы можете проверить, что плагин установлен и включен, еще раз перечислив плагины:

docker plugin ls

Теперь вы должны увидеть vieux/sshfs в списке с параметром ENABLED установленным в true.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         true

Теперь отключим плагин vieux/sshfs по его имени:

docker plugin disable vieux/sshfs

Если команда выполнится успешно, вы не увидите никакого вывода. Это означает, что плагин был отключен.

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

Проверка отключения плагина

На этом этапе вы убедитесь, что плагин vieux/sshfs, который вы отключили на предыдущем этапе, действительно больше не включен.

Для проверки статуса установленных плагинов вы можете снова использовать команду docker plugin ls. Эта команда покажет текущее состояние всех плагинов.

Выполните команду:

docker plugin ls

Посмотрите на вывод для плагина vieux/sshfs. В столбце ENABLED теперь должно быть false.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         false

Если в столбце ENABLED отображается false, это подтверждает, что плагин был успешно отключен. Когда плагин отключен, Docker не может использовать его функциональность.

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

Попытка отключить плагин с существующими ссылками (необязательный этап)

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

Сначала снова включите плагин vieux/sshfs, чтобы мы могли использовать его.

docker plugin enable vieux/sshfs

Теперь создадим том Docker, который использует плагин vieux/sshfs. Это создаст зависимость от плагина.

docker volume create --driver vieux/sshfs -o sshcmd=user@host:/path/to/dir -o IdentityFile=~/.ssh/id_rsa sshfs_volume

Примечание: Эта команда, скорее всего, завершится с ошибкой, так как у вас не настроен действительный SSH - хост и ключ. Это ожидаемо и служит для создания тома, который пытается использовать плагин, тем самым создавая ссылку на него. Вы увидите сообщение об ошибке, указывающее, что создание тома не удалось.

Теперь попробуем снова отключить плагин vieux/sshfs, когда том sshfs_volume существует, даже если создание тома не удалось.

docker plugin disable vieux/sshfs

Вы должны увидеть сообщение об ошибке, похожее на следующее:

Error response from daemon: plugin vieux/sshfs is in use by volume sshfs_volume

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

Для успешного отключения плагина в этом сценарии вам сначала нужно удалить зависимый ресурс (в данном случае том). Удалим том:

docker volume rm sshfs_volume

Теперь вы должны быть able to отключить плагин:

docker plugin disable vieux/sshfs

На этот раз команда должна выполниться успешно без сообщения об ошибке.

Этот этап показывает, что Docker управляет зависимостями и не позволяет отключать плагины, которые активно используются.

Принудительное отключение активного плагина (необязательный этап)

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

Сначала убедимся, что плагин vieux/sshfs включен.

docker plugin enable vieux/sshfs

Теперь попробуем принудительно отключить плагин, используя флаг -f или --force:

docker plugin disable -f vieux/sshfs

Даже с флагом принудительного отключения, если плагин активно используется запущенным контейнером или другим критически важным ресурсом, Docker может по-прежнему запретить операцию отключения, чтобы избежать нестабильности системы. Однако для простого плагина, такого как vieux/sshfs, который не активно управляет запущенным контейнером, флаг принудительного отключения обычно даст положительный результат, даже если остались неудаленные ссылки (хотя мы удалили ссылку на том на предыдущем этапе).

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

После попытки принудительного отключения вы можете проверить статус плагина:

docker plugin ls

Плагин vieux/sshfs должен быть теперь отображен с параметром ENABLED равным false.

ID                  NAME                DESCRIPTION                         ENABLED
<plugin_id>         vieux/sshfs         Mount remote SSH filesystem         false

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

Резюме

В этом практическом занятии (лабораторной работе) вы научились управлять плагинами Docker, в частности, отключать их. Вы начали с вывода списка установленных плагинов с помощью команды docker plugin ls, чтобы понять их статус и определить, какие из них активны. Затем вы практиковались в отключении плагина с использованием команды docker plugin disable, показывая, как остановить функциональность плагина. Наконец, вы проверили, что плагин был успешно отключен.