如何使用 docker plugin install 命令安装和管理插件

DockerDockerBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用 docker plugin install 命令来安装和管理 Docker 插件。你将探索不同的安装场景,包括使用默认设置安装插件、安装插件并使用特定参数进行配置,以及安装插件但不立即启用它。

通过实际操作示例,你将获得通过集成外部存储服务和其他功能来扩展 Docker 能力的实践经验。最后,你将学习如何验证插件是否成功安装。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/system("Manage Docker") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555191{{"如何使用 docker plugin install 命令安装和管理插件"}} docker/inspect -.-> lab-555191{{"如何使用 docker plugin install 命令安装和管理插件"}} docker/volume -.-> lab-555191{{"如何使用 docker plugin install 命令安装和管理插件"}} docker/system -.-> lab-555191{{"如何使用 docker plugin install 命令安装和管理插件"}} docker/network -.-> lab-555191{{"如何使用 docker plugin install 命令安装和管理插件"}} end

使用默认设置安装插件

在这一步中,你将学习如何使用默认设置安装 Docker 插件。Docker 插件可以扩展 Docker 的功能,使你能够与外部系统集成,以实现存储、网络等功能。

要安装插件,你可以使用 docker plugin install 命令,后跟插件名称。默认情况下,Docker 会从 Docker Hub 拉取插件。

让我们来安装 rexray/s3fs 插件,它为 Docker 卷提供基于 S3 的存储。

docker plugin install rexray/s3fs

当你运行此命令时,Docker 会下载插件,并要求你确认授予其必要的权限。输入 y 并按回车键继续。

Plugin "rexray/s3fs" is requesting the following permissions:
 - network: [host]
 - mount: [/dev/fuse]
 - allow-vulnerable-api: true
 - allow-host-access: true
 - allow-device: [/dev/fuse]
 - allow-cap: [sys_admin]
Do you grant the plugin "rexray/s3fs" these permissions? [y/N] y

确认后,Docker 将安装并启用该插件。你应该会看到表明插件已安装并启用的输出。

rexray/s3fs:latest

此输出确认 rexray/s3fs 插件已成功安装,并且现在已启用,可以用于创建基于 S3 的卷。

安装插件并设置配置参数

在这一步中,你将学习如何安装 Docker 插件,并在安装过程中使用特定参数对其进行配置。一些插件需要配置设置,如 API 密钥、端点或其他特定于服务的详细信息,才能正常工作。

你可以使用 plugin_name parameter_name=parameter_value 的格式将配置参数传递给 docker plugin install 命令。

让我们来安装 vieux/sshfs 插件,它允许你将 SSHFS 用于 Docker 卷。此插件需要指定 SSH 用户和主机。

docker plugin install vieux/sshfs SSH_USER=labex SSH_HOST=localhost

与上一步类似,Docker 会下载插件并要求你授予权限。输入 y 并按回车键授予权限。

Plugin "vieux/sshfs" is requesting the following permissions:
 - network: [host]
 - mount: [/dev/fuse]
 - allow-vulnerable-api: true
 - allow-host-access: true
 - allow-device: [/dev/fuse]
 - allow-cap: [sys_admin]
Do you grant the plugin "vieux/sshfs" these permissions? [y/N] y

确认后,插件将使用指定的配置参数进行安装并启用。

vieux/sshfs:latest

此输出确认 vieux/sshfs 插件已安装并启用,其中 SSH_USER 设置为 labexSSH_HOST 设置为 localhost。插件在创建卷时将使用这些参数。

安装插件但不启用

在这一步中,你将学习如何安装 Docker 插件而不立即启用它。如果你想安装一个插件,但在准备好使用它之前不想让它处于活动状态,或者在启用之前需要执行额外的配置步骤,这种方法会很有用。

要安装插件但不启用它,你可以在 docker plugin install 命令中使用 --disable 标志。

让我们来安装 containernetworking/cni 插件,它提供 CNI 网络功能,但目前先将其禁用。

docker plugin install --disable containernetworking/cni

Docker 会下载插件并要求你授予权限。输入 y 并按回车键授予权限。

Plugin "containernetworking/cni" is requesting the following permissions:
 - network: [host]
 - mount: [/dev/fuse]
 - allow-vulnerable-api: true
 - allow-host-access: true
 - allow-device: [/dev/fuse]
 - allow-cap: [sys_admin]
Do you grant the plugin "containernetworking/cni" these permissions? [y/N] y

确认后,插件将被安装,但仍处于禁用状态。

containernetworking/cni:latest

此输出确认 containernetworking/cni 插件已成功安装。在下一步中,我们将验证其状态。

验证已安装的插件

在这一步中,你将学习如何验证已安装的 Docker 插件的状态。你可以查看哪些插件已安装、它们的版本,以及它们是启用还是禁用状态。

要列出所有已安装的插件,你可以使用 docker plugin ls 命令。

docker plugin ls

此命令将显示一个表格,其中包含每个已安装插件的信息,包括其 ID、名称、描述、启用状态和版本。

你应该能看到我们在前面步骤中安装的三个插件:rexray/s3fsvieux/sshfscontainernetworking/cni

ID                  NAME                       DESCRIPTION                                            ENABLED             VERSION
a1b2c3d4e5f6        rexray/s3fs:latest         REX-Ray S3FS Plugin                                    true                latest
g7h8i9j0k1l2        vieux/sshfs:latest         The `sshfs` plugin for Docker.                         true                latest
m3n4o5p6q7r8        containernetworking/cni:latest CNI network plugin for Docker                        false               latest

注意,rexray/s3fsvieux/sshfs 显示为 ENABLED(已启用,值为 true),而 containernetworking/cni 显示为 ENABLED(未启用,值为 false),因为我们在安装它时使用了 --disable 标志。

你还可以使用 docker plugin inspect 命令,后跟插件名称或 ID,来检查特定插件的更详细信息。

让我们来检查 containernetworking/cni 插件:

docker plugin inspect containernetworking/cni

此命令将输出一个详细的 JSON 对象,其中包含该插件的所有配置和状态信息。你可以检查此输出以确认插件的设置和状态。在输出中查找 "Enabled": false 这一行,以确认它处于禁用状态。

[
  {
    "Id": "m3n4o5p6q7r8",
    "Name": "containernetworking/cni:latest",
    "Enabled": false,
    "Settings": {
      "Args": [],
      "Env": [],
      "Devices": [],
      "Mounts": []
    },
    "PluginReference": "docker.io/containernetworking/cni:latest",
    "Config": {
      "DockerVersion": "20.10.21",
      "Description": "CNI network plugin for Docker",
      "Documentation": "https://github.com/containernetworking/cni",
      "Interface": {
        "Types": ["docker.networkdriver/1.0"],
        "Socket": "cni.sock"
      },
      "Entrypoint": ["/docker-cni-plugin"],
      "PropagatedMount": "/opt/cni",
      "WorkDir": "",
      "User": {},
      "Args": {
        "Name": "",
        "Description": ""
      },
      "Linux": {
        "Capabilities": ["CAP_SYS_ADMIN"],
        "AllowAllDevices": false,
        "Devices": [
          {
            "Name": "fuse",
            "Path": "/dev/fuse"
          }
        ]
      },
      "Rootfs": {
        "Type": "tar",
        "DiffIds": ["sha256:..."]
      }
    }
  }
]

这一步结束了 Docker 插件的安装和验证过程。你已经学习了如何使用默认设置安装插件、使用特定配置参数安装插件,以及如何安装插件而不立即启用它们。你还了解了如何列出和检查已安装的插件以验证它们的状态。

总结

在这个实验中,你学习了如何使用 docker plugin install 命令来安装和管理 Docker 插件。你练习了使用默认设置安装插件,这只需指定插件名称并确认所请求的权限即可。

此外,你还探索了如何在安装过程中设置特定的配置参数来安装插件,展示了如何从一开始就自定义插件的行为。最后,你学习了如何验证插件是否成功安装。