简介
在本次实验中,你将学习如何使用 docker swarm unlock
命令,在启用自动锁定功能并重启 Docker 守护进程后解锁 Docker 集群管理器。我们将首先启用自动锁定功能来初始化一个集群,这将生成一个唯一的解锁密钥。
接下来,我们将在管理节点上模拟 Docker 守护进程重启,以触发自动锁定机制。最后,你将使用之前获取的解锁密钥配合 docker swarm unlock
命令,成功解锁集群管理器,使其恢复运行。
在本次实验中,你将学习如何使用 docker swarm unlock
命令,在启用自动锁定功能并重启 Docker 守护进程后解锁 Docker 集群管理器。我们将首先启用自动锁定功能来初始化一个集群,这将生成一个唯一的解锁密钥。
接下来,我们将在管理节点上模拟 Docker 守护进程重启,以触发自动锁定机制。最后,你将使用之前获取的解锁密钥配合 docker swarm unlock
命令,成功解锁集群管理器,使其恢复运行。
在这一步中,我们将启用自动锁定功能来初始化一个 Docker 集群。自动锁定功能要求在重启 Docker 守护进程后使用密钥来解锁集群,从而有助于保护集群免受未经授权的访问。
首先,让我们来初始化集群。我们将使用带有 --autolock
标志的 docker swarm init
命令。
docker swarm init --autolock
你应该会看到类似以下的输出,这表明集群已初始化并生成了一个解锁密钥。请务必复制该解锁密钥,因为你将在下一步中用到它。
Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
To unlock the swarm after it restarts, run the `docker swarm unlock` command and provide the following key:
Swarm unlock key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
输出中提供了将工作节点或管理节点加入集群的命令,重要的是还给出了 Swarm unlock key
(集群解锁密钥)。在 Docker 守护进程重启后,此密钥对于解锁集群至关重要。
在这一步中,我们将在管理节点上模拟 Docker 守护进程的重启。这将展示我们在上一步中启用的自动锁定功能的效果。
要重启 Docker 守护进程,我们将使用 systemctl restart docker
命令。由于此操作需要 root 权限,我们将使用 sudo
。
sudo systemctl restart docker
命令执行后,Docker 守护进程将先停止,然后重新启动。这模拟了服务器重启或手动重启 Docker 服务的情况。
现在,让我们尝试运行一个简单的 Docker 命令,以查看集群的状态。我们将使用 docker node ls
。
docker node ls
你应该会看到一条错误消息,表明集群已被锁定,需要解锁才能使用。这证实了自动锁定功能正在按预期工作。输出将类似于以下内容:
Error: swarm is encrypted and needs to be unlocked before it can be used. Please use "docker swarm unlock" to unlock it.
此错误消息是预期的,因为由于 Docker 守护进程的重启,集群现在已被锁定。在下一步中,我们将使用在第一步中获取的解锁密钥来解锁集群。
docker swarm unlock
解锁管理节点在这一步中,我们将使用在第一步中获取的解锁密钥来解锁 Docker 集群。这样我们就可以再次与集群进行交互。
回想一下在第一步初始化集群时显示的解锁密钥。你需要将此密钥提供给 docker swarm unlock
命令。
使用 docker swarm unlock
命令,后面跟上 --unlock-key
标志和你复制的解锁密钥。将 YOUR_UNLOCK_KEY
替换为实际的密钥。
docker swarm unlock --unlock-key YOUR_UNLOCK_KEY
使用正确的解锁密钥执行命令后,集群应该会被解锁。你应该会看到表明集群已成功解锁的输出。
Swarm unlocked.
现在集群已解锁,让我们通过列出集群中的节点来验证是否可以再次与它进行交互。
docker node ls
你现在应该会看到管理节点的详细信息,这表明集群已正常运行。输出将类似于以下内容:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
xxxxxxxxxxxx labex-vm Ready Active Leader 20.10.21
这证实了你已在守护进程重启后成功解锁了 Docker 集群。
在本次实验中,我们学习了如何在启用自动锁定功能初始化集群后,在 Docker 守护进程重启时使用 docker swarm unlock
命令解锁集群管理节点。我们首先使用 docker swarm init --autolock
初始化了一个 Docker 集群,该命令会生成一个唯一的解锁密钥,此密钥对于在重启后重新访问集群至关重要。然后,我们使用 sudo systemctl restart docker
在管理节点上模拟了 Docker 守护进程的重启,以此触发自动锁定机制。这展示了在初始化过程中获取的解锁密钥的重要性。