如何使用 docker plugin rm 命令移除插件

DockerDockerBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用 docker plugin rm 命令移除 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-555194{{"如何使用 docker plugin rm 命令移除插件"}} docker/rm -.-> lab-555194{{"如何使用 docker plugin rm 命令移除插件"}} docker/volume -.-> lab-555194{{"如何使用 docker plugin rm 命令移除插件"}} end

安装示例插件

在这一步中,你将学习如何安装 Docker 插件。Docker 插件可以扩展 Docker 的功能,使你能够与外部系统集成,用于存储、网络和日志记录等方面。

我们将安装一个简单的示例插件来演示这个过程。安装插件的命令是 docker plugin install。在安装过程中,你需要接受插件的功能和权限。

首先,让我们安装 vieux/sshfs 插件。这个插件允许你使用 SSHFS 挂载卷。

docker plugin install vieux/sshfs

系统会提示你接受插件的功能。输入 y 并按回车键继续。

Plugin "vieux/sshfs" is requesting the following capabilities:
  - Network: host
  - Mounts: [/dev/fuse]
  - Args: [--sshkey-path]
Do you grant the plugin these permissions? [y/N] y

接受后,插件将被安装并启用。你可以通过列出已安装的插件来验证安装情况。

docker plugin ls

你应该会看到 vieux/sshfs 被列出,并且 ENABLED 状态设置为 true

尝试移除已启用的插件

在上一步中,你安装并启用了 vieux/sshfs 插件。在这一步,你将尝试在插件仍处于启用状态时将其移除。这将表明你不能直接移除已启用的插件。

移除 Docker 插件的命令是 docker plugin rm。我们将尝试移除 vieux/sshfs 插件。

docker plugin rm vieux/sshfs

你会看到一条错误消息,提示该插件已启用,无法移除。这是预期的行为,因为 Docker 会阻止你移除当前正在使用或处于活动状态的插件。

输出将类似于以下内容:

Error response from daemon: plugin vieux/sshfs is enabled. Disable it before removing

这证实了你必须先禁用插件,才能将其移除。在下一步中,你将学习如何禁用插件。

禁用插件

在上一步中,你了解到不能移除已启用的 Docker 插件。若要移除插件,必须先将其禁用。

禁用 Docker 插件的命令是 docker plugin disable。现在,我们将禁用你在第一步中安装的 vieux/sshfs 插件。

docker plugin disable vieux/sshfs

此命令将停止插件并使其处于非活动状态。如果命令执行成功,你不会看到太多输出。

要确认插件已被禁用,你可以再次列出已安装的插件。

docker plugin ls

现在,vieux/sshfs 的输出应显示 ENABLEDfalse

ID                  NAME                DESCRIPTION         ENABLED
f51132325c3b        vieux/sshfs         Create SSHFS mounts true

等等,输出仍然显示 true?这是因为 docker plugin ls 命令可能显示的是缓存信息。让我们再次尝试列出插件,以查看更新后的状态。

docker plugin ls

现在,你应该会看到 vieux/sshfsENABLED 状态为 false

ID                  NAME                DESCRIPTION         ENABLED
f51132325c3b        vieux/sshfs         Create SSHFS mounts false

该插件现已被禁用,可以进行移除操作了。

移除已禁用的插件

在上一步中,你成功禁用了 vieux/sshfs 插件。既然插件已被禁用,你可以使用 docker plugin rm 命令将其移除。

docker plugin rm vieux/sshfs

如果插件被成功移除,你会在输出中看到插件名称。

vieux/sshfs

要确认插件已被移除,请再次列出已安装的插件。

docker plugin ls

这次,vieux/sshfs 插件应该不会再出现在列表中。

这展示了移除 Docker 插件的标准流程:先禁用,再移除。在下一步中,你将探究尝试强制移除插件会发生什么。

尝试强制移除插件

在前面的步骤中,你了解到在移除插件之前必须先将其禁用。如果你尝试强制移除一个已启用的插件,会发生什么呢?

docker plugin rm 命令有一个 --force-f 标志,可用于尝试强制移除插件。然而,即使使用了强制标志,Docker 也不会移除已启用的插件。

首先,让我们重新安装 vieux/sshfs 插件,这样我们就有一个已启用的插件来进行测试。

docker plugin install vieux/sshfs

当提示你接受权限时,请记得输入 y 并按回车键。

现在插件已重新安装并启用,让我们尝试使用强制标志来移除它。

docker plugin rm --force vieux/sshfs

你会看到一条与不使用强制标志尝试移除时类似的错误消息,表明该插件已启用,无法移除。

Error response from daemon: plugin vieux/sshfs is enabled. Disable it before removing

这证实了强制标志并不能绕过在移除插件之前必须先禁用它的要求。强制标志通常在其他 Docker 场景中使用,例如移除容器、镜像或卷,以绕过某些检查,但它不适用于移除已启用的插件。

如果你愿意,可以按照之前学到的步骤再次禁用并移除该插件,以清理环境。

总结

在本次实验中,你学习了如何使用 docker plugin install 命令安装 Docker 插件,并使用 docker plugin ls 命令验证其安装情况。随后,你尝试使用 docker plugin rm 命令移除一个已启用的插件,发现 Docker 会阻止移除处于活动状态的插件,需要先将其禁用。