介绍
在本次实验中,你将学习如何管理 Docker 插件,特别关注升级过程。你将从安装和使用 Docker 插件开始,以了解其基本功能以及它如何与 Docker 集成。
完成初始设置后,你将学习为插件升级做准备所需的步骤,这包括禁用插件。最后,你将使用 docker plugin upgrade 命令执行升级,然后重新启用并验证升级后的插件,以确保其正常运行。本次实验提供了 Docker 插件生命周期管理的实践经验。
安装并使用 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 被列出,其 DRIVER 为 rexray/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 状态为 false。ID 可能已经改变,这表明已经安装了新版本。
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-volume 和 my-s3-volume-2 都被列出,且 DRIVER 为 rexray/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 命令重新启用了升级后的插件,并验证了其状态和功能,确认升级过程成功完成。



