如何使用 docker plugin upgrade 命令升级插件

DockerDockerBeginner
立即练习

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

简介

在本次实验中,你将学习如何管理 Docker 插件,特别关注升级过程。你将从安装和使用 Docker 插件开始,以了解其基本功能以及它如何与 Docker 集成。

完成初始设置后,你将学习为插件升级做准备所需的步骤,这包括禁用插件。最后,你将使用 docker plugin upgrade 命令执行升级,然后重新启用并验证升级后的插件,以确保其正常运行。本次实验提供了 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/inspect("Inspect Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/ls -.-> lab-555196{{"如何使用 docker plugin upgrade 命令升级插件"}} docker/inspect -.-> lab-555196{{"如何使用 docker plugin upgrade 命令升级插件"}} docker/volume -.-> lab-555196{{"如何使用 docker plugin upgrade 命令升级插件"}} end

安装并使用 Docker 插件

在这一步中,你将学习如何安装和使用 Docker 插件。Docker 插件可以扩展 Docker 的功能,它们能提供诸如卷管理、网络驱动程序等功能。我们将安装一个名为 rexray/s3fs 的简单卷插件,该插件允许将 Docker 卷存储在 Amazon S3 上。尽管我们不会设置完整的 S3 后端,但安装该插件可以演示整个过程。

首先,让我们来安装这个插件。你可以使用 docker plugin install 命令来安装 Docker 插件。

sudo docker plugin install rexray/s3fs --grant-all-permissions

此命令会安装 rexray/s3fs 插件并授予其所有必要的权限。在本次实验环境中,为了简便起见使用了 --grant-all-permissions 标志。在生产环境中,你应该仔细审查并仅授予必要的权限。

你会被提示确认安装和权限。输入 y 并按回车键。

Plugin "rexray/s3fs" is requesting the following permissions:
 - network: host
 - mount: /dev/fuse
 - allow-sys-admin
 - allow-cap-sys-admin
 - allow-device /dev/fuse
 - allow-cfg-unix-groups
 - allow-runtime-privilege
 - allow-force-remove
Do you grant the plugin these permissions? [y/N] y

确认后,Docker 会下载并安装该插件。根据你的网络连接情况,这可能需要一些时间。

安装完成后,你可以使用 docker plugin ls 命令来验证插件是否已安装并启用。

sudo docker plugin ls

你应该会看到 rexray/s3fs 被列出,且 ENABLED 状态为 true

ID                  NAME                DESCRIPTION                                            ENABLED
xxxxxxxxxxxx        rexray/s3fs         REX-Ray S3FS Docker Volume Plugin                      true

现在插件已安装并启用,你可以使用它来创建一个卷。尽管在未配置 S3 凭证的情况下我们无法充分利用 S3 的功能,但仍可以使用该插件驱动程序创建一个卷。

sudo docker volume create --driver rexray/s3fs my-s3-volume

此命令尝试使用 rexray/s3fs 驱动程序创建一个名为 my-s3-volume 的卷。由于我们尚未配置 S3,此命令可能会显示与 S3 连接相关的警告或错误,但 Docker 会创建卷对象本身。

你可以列出卷以查看新创建的卷。

sudo docker volume ls

你应该会看到 my-s3-volume 被列出,其 DRIVERrexray/s3fs

DRIVER              VOLUME NAME
rexray/s3fs         my-s3-volume

最后,你可以检查该卷以查看其更多详细信息。

sudo docker volume inspect my-s3-volume

此命令将输出一个包含 my-s3-volume 信息的 JSON 对象,包括其驱动程序。

升级前禁用插件

在这一步中,你将学习如何禁用 Docker 插件。在升级 Docker 插件之前,先将其禁用是一个很好的做法。这可以确保在升级过程中没有任何容器或服务正在使用该插件,从而避免潜在的问题。

你可以使用 docker plugin disable 命令来禁用 Docker 插件。

sudo docker plugin disable rexray/s3fs

此命令会禁用 rexray/s3fs 插件。如果该插件当前正被任何运行中的容器使用,Docker 将阻止你禁用它并提供一条错误消息。在我们的示例中,该插件没有被运行中的容器使用,因此应该可以成功禁用。

禁用插件后,你可以使用 docker plugin ls 命令来验证其状态。

sudo docker plugin ls

现在你应该会看到 rexray/s3fs 被列出,且 ENABLED 状态为 false

ID                  NAME                DESCRIPTION                                            ENABLED
xxxxxxxxxxxx        rexray/s3fs         REX-Ray S3FS Docker Volume Plugin                      false

禁用插件会使其处于非活动状态,但它仍然安装在你的系统上。在继续进行插件升级或移除操作之前,这种状态是必要的。

升级 Docker 插件

在这一步中,你将学习如何升级 Docker 插件。升级插件意味着安装该插件的新版本。由于我们在上一步中已经禁用了插件,现在可以继续进行升级操作。

要升级 Docker 插件,你可以再次使用 docker plugin install 命令,指定插件名称,如果需要特定版本,还可以指定新的标签。如果你不指定标签,Docker 将拉取最新版本。我们将使用相同的插件名称,Docker 会处理升级过程。

sudo docker plugin install rexray/s3fs --grant-all-permissions

此命令将尝试再次安装 rexray/s3fs 插件。由于已经安装了一个版本,Docker 会将此操作识别为升级尝试。与初始安装类似,你会被提示确认升级和权限。

Plugin "rexray/s3fs" is requesting the following permissions:
 - network: host
 - mount: /dev/fuse
 - allow-sys-admin
 - allow-cap-sys-admin
 - allow-device /dev/fuse
 - allow-cfg-unix-groups
 - allow-runtime-privilege
 - allow-force-remove
Do you grant the plugin these permissions? [y/N] y

输入 y 并按回车键以继续升级。Docker 将下载插件的新版本并替换现有的版本。

升级完成后,插件仍将处于禁用状态。你可以使用 docker plugin ls 命令来验证这一点。

sudo docker plugin ls

你应该仍然会看到 rexray/s3fs 被列出,且 ENABLED 状态为 falseID 可能已经改变,这表明已经安装了新版本。

ID                  NAME                DESCRIPTION                                            ENABLED
yyyyyyyyyyyy        rexray/s3fs         REX-Ray S3FS Docker Volume Plugin                      false

升级插件会用新版本替换插件的可执行文件和配置文件。升级完成后,重新启用插件以使其可供使用是很重要的。

重新启用并验证升级后的插件

在这一步中,你将重新启用升级后的 Docker 插件,并验证其是否正常工作。升级插件后,它仍处于禁用状态。你需要显式地启用它,以便 Docker 可以使用它。

你可以使用 docker plugin enable 命令来启用 Docker 插件。

sudo docker plugin enable rexray/s3fs

此命令将启用 rexray/s3fs 插件。如果插件成功启动,该命令将在无输出的情况下完成。如果启动插件时出现问题,你可能会看到一条错误消息。

启用插件后,你可以使用 docker plugin ls 命令来验证其状态。

sudo docker plugin ls

现在你应该会看到 rexray/s3fs 被列出,且 ENABLED 状态恢复为 true

ID                  NAME                DESCRIPTION                                            ENABLED
yyyyyyyyyyyy        rexray/s3fs         REX-Ray S3FS Docker Volume Plugin                      true

为了进一步验证升级后的插件是否正常工作,你可以尝试使用该插件驱动创建另一个卷。

sudo docker volume create --driver rexray/s3fs my-s3-volume-2

此命令使用 rexray/s3fs 驱动创建一个名为 my-s3-volume-2 的新卷。如果插件功能正常,该命令应该会成功执行(不过,和之前一样,如果未进行配置,可能会显示与 S3 连接相关的警告)。

你可以再次列出卷,以查看新创建的卷。

sudo docker volume ls

现在你应该会看到 my-s3-volumemy-s3-volume-2 都被列出,且 DRIVERrexray/s3fs

DRIVER              VOLUME NAME
rexray/s3fs         my-s3-volume
rexray/s3fs         my-s3-volume-2

这证实了升级后的插件已启用,并且可以用于创建卷。

总结

在这个实验中,你学习了如何安装和使用 Docker 插件。具体来说,你使用 docker plugin install 命令安装了 rexray/s3fs 卷插件,并授予了必要的权限。然后,你使用 docker plugin ls 命令验证了插件的成功安装和启用状态。

安装完成后,你了解到在进行升级之前,使用 docker plugin disable 命令禁用插件这一关键步骤。接着,你使用 docker plugin upgrade 命令执行了插件升级,并指定了新版本。最后,你使用 docker plugin enable 命令重新启用了升级后的插件,并验证了其状态和功能,确认升级过程成功完成。