简介
在这个实验中,你将学习如何使用 docker swarm init
命令初始化一个 Docker Swarm。你将从初始化一个基本的 Swarm 开始,以了解其基本过程。
在基本初始化的基础上,你将进一步探索更高级的场景。这包括使用特定的通告地址(advertise address)初始化 Swarm 以控制网络通信、启用自动锁定(autolock)以增强安全性,以及配置自定义的数据路径端口。通过这些步骤,你将获得设置和定制 Docker Swarm 环境的实践经验。
在这个实验中,你将学习如何使用 docker swarm init
命令初始化一个 Docker Swarm。你将从初始化一个基本的 Swarm 开始,以了解其基本过程。
在基本初始化的基础上,你将进一步探索更高级的场景。这包括使用特定的通告地址(advertise address)初始化 Swarm 以控制网络通信、启用自动锁定(autolock)以增强安全性,以及配置自定义的数据路径端口。通过这些步骤,你将获得设置和定制 Docker Swarm 环境的实践经验。
在这一步中,你将学习如何初始化一个基本的 Docker Swarm。Docker Swarm 是 Docker 原生的集群和编排解决方案。它允许你创建和管理一个 Docker 节点集群。
在初始化 Swarm 之前,让我们先检查一下当前 Docker 的状态。
docker info
你应该会看到有关你 Docker 安装的信息。查找“Swarm”部分,它应该显示 Swarm 处于非活动状态。
要初始化一个基本的 Swarm,你将使用 docker swarm init
命令。这个命令会将当前的 Docker 主机转变为一个 Swarm 管理器(manager)。
docker swarm init
运行该命令后,你会看到输出信息,表明 Swarm 已初始化,并提供一个命令,用于让其他节点作为工作节点(worker)加入该 Swarm。
让我们验证一下 Swarm 是否已成功初始化。
docker info
现在,“Swarm”部分应该显示 Swarm 处于活动状态,并表明当前节点是一个管理器(manager)。
你还可以使用 docker node ls
命令来列出 Swarm 中的节点。
docker node ls
你应该会看到当前节点被列出,状态为“Ready”,角色为“Manager”。
在上一步中,你初始化了一个基本的 Docker Swarm。在这一步中,你将学习如何初始化一个 Swarm 并指定 Swarm 管理器(manager)向其他节点通告的地址。这在具有多个网络接口的环境中,或者当你想控制使用哪个地址进行 Swarm 通信时非常有用。
首先,你需要离开现有的 Swarm。你可以使用 docker swarm leave
命令来完成此操作。由于这是唯一的节点且它是一个管理器(manager),你需要使用 --force
标志。
docker swarm leave --force
你应该会看到确认该节点已离开 Swarm 的输出信息。
现在,让我们查找你当前机器的 IP 地址。你可以使用 ip addr show
命令,并查找与你的网络接口(通常是 eth0
或 ens*
)关联的 IP 地址。
ip addr show
确定你想用于 Swarm 通告地址(advertise address)的 IP 地址。例如,如果你的 IP 地址是 172.17.0.2
,你将使用该地址。
现在,再次初始化 Swarm,但这次使用 --advertise-addr
标志指定通告地址(advertise address)。将 <YOUR_IP_ADDRESS>
替换为你找到的实际 IP 地址。
docker swarm init --advertise-addr <YOUR_IP_ADDRESS>
你会看到类似于基本初始化的输出信息,但加入命令现在将包含指定的通告地址(advertise address)。
要验证 Swarm 是否使用正确的通告地址(advertise address)进行了初始化,你可以检查 Swarm。
docker swarm inspect --pretty
在输出中查找 AdvertiseAddr
字段,它应该与你指定的 IP 地址匹配。
在这一步中,你将学习如何启用自动锁定(autolock)功能来初始化一个 Docker Swarm。自动锁定(autolock)功能通过要求使用解密密钥在 Docker 守护进程重启后解锁 Swarm,有助于保护 Swarm 免受未经授权的访问。
首先,像上一步那样离开现有的 Swarm。
docker swarm leave --force
现在,使用 --autolock
标志初始化 Swarm。如果你想指定通告地址(advertise address),也可以再次使用 --advertise-addr
标志。将 <YOUR_IP_ADDRESS>
替换为你机器的 IP 地址。
docker swarm init --autolock --advertise-addr <YOUR_IP_ADDRESS>
当你使用 --autolock
初始化 Swarm 时,输出信息中将包含一个“Swarm auto-lock key”。务必将此密钥保存在安全的位置。 在 Docker 守护进程重启后,你需要使用它来解锁 Swarm。
要验证自动锁定(autolock)功能是否已启用,你可以检查 Swarm。
docker swarm inspect --pretty
在输出中查找 AutoLockManagers
字段,它应该被设置为 true
。
请注意,由于这是实验环境中的单节点 Swarm,你不会体验到守护进程重启后需要密钥才能解锁的自动锁定(autolock)功能的完整效果。不过,这一步展示了如何启用该功能。
在这一步中,你将学习如何初始化一个 Docker Swarm 并为数据路径网络指定一个自定义端口。数据路径网络用于 Swarm 节点之间的通信,以完成服务发现和负载均衡等任务。默认情况下,该网络使用端口 4789。如果该端口与你网络中的其他服务冲突,你可能需要更改此端口。
首先,离开现有的 Swarm。
docker swarm leave --force
现在,使用 --data-path-port
标志初始化 Swarm 并指定一个自定义数据路径端口。我们以端口 5789
为例。如果你愿意,还可以包含 --advertise-addr
标志和 --autolock
标志。将 <YOUR_IP_ADDRESS>
替换为你机器的 IP 地址。
docker swarm init --data-path-port 5789 --advertise-addr < YOUR_IP_ADDRESS > --autolock
你将看到初始化输出,如果你启用了自动锁定(autolock)功能,还会包含自动锁定密钥。
要验证是否已配置自定义数据路径端口,你可以检查 Swarm。
docker swarm inspect --pretty
在输出中查找 DataPathPort
字段,它应该显示你指定的自定义端口,在这个例子中是 5789
。
至此,使用各种选项初始化 Docker Swarm 的步骤就结束了。你已经学习了如何初始化一个基本的 Swarm、指定通告地址(advertise address)、启用自动锁定(autolock)功能以及设置自定义数据路径端口。
在本次实验中,你学习了初始化 Docker Swarm 的基本流程。你首先使用 docker swarm init
命令初始化了一个基本的 Swarm,通过 docker info
观察了相关变化,并使用 docker node ls
验证了管理节点(manager)的角色。
随后,你探索了更高级的初始化选项。你学习了如何使用 docker swarm leave --force
离开现有的 Swarm,然后在重新初始化 Swarm 时使用 --advertise-addr
标志指定特定的通告地址(advertise address)。这展示了如何控制用于 Swarm 通信的网络接口。