如何使用 docker plugin disable 命令禁用插件

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何通过聚焦于 docker plugin disable 命令来管理 Docker 插件。你将从列出当前已安装的插件开始,以了解它们的状态。接着,你将练习禁用一个插件,并观察此操作的效果。

本实验还将介绍如何验证插件是否已成功禁用。你还可以选择探索禁用插件可能受限的场景,例如当插件有活动引用时,以及如何强制禁用一个活动的插件。


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 并按回车键继续。

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

现在,让我们创建一个使用 vieux/sshfs 插件的 Docker 卷。这将创建对该插件的依赖。

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

注意: 此命令可能会失败,因为你没有配置有效的 SSH 主机和密钥。这是预期的,其目的是创建一个 尝试 使用该插件的卷,从而创建一个引用。你将看到一条错误消息,表明卷创建失败。

现在,让我们在 sshfs_volume 卷存在的情况下再次尝试禁用 vieux/sshfs 插件,即使卷创建失败了。

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

现在,你应该能够禁用该插件了:

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 插件现在应该在列表中显示 ENABLEDfalse

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

至此,关于处理插件依赖和强制禁用的可选步骤结束。你已经学习了如何列出、禁用和验证 Docker 插件的状态,以及 Docker 如何处理禁用有引用的插件的尝试。

总结

在这个实验中,你学习了如何管理 Docker 插件,特别关注了如何禁用它们。你首先使用 docker plugin ls 命令列出已安装的插件,以了解它们的状态并确定哪些插件处于活动状态。然后,你练习使用 docker plugin disable 命令禁用插件,展示了如何停止插件的功能。最后,你验证了插件是否已成功禁用。