简介
Docker Swarm 是一个强大的集群管理和编排解决方案,可让你大规模部署和管理 Docker 容器。在本教程中,你将学习如何设置 Docker Swarm、管理和扩展你的 Swarm 服务,以及充分利用 Docker 容器编排功能的全部潜力。
Docker Swarm 是一个强大的集群管理和编排解决方案,可让你大规模部署和管理 Docker 容器。在本教程中,你将学习如何设置 Docker Swarm、管理和扩展你的 Swarm 服务,以及充分利用 Docker 容器编排功能的全部潜力。
Docker Swarm 是用于 Docker 容器的原生集群和编排工具。它允许你管理一组称为 Swarm 的 Docker 引擎,并将服务部署到 Swarm 中。在 Docker Swarm 中,Docker 引擎作为单个虚拟 Docker 主机协同工作。
既然你对 Docker Swarm 有了基本的了解,让我们进入下一部分:初始化 Docker Swarm。
在初始化 Docker Swarm 之前,你需要准备好一组 Docker 主机(节点)。你可以使用物理机或虚拟机,只要它们运行的是相同版本的 Docker。
要初始化 Docker Swarm,你需要将其中一个节点指定为管理器。你可以通过在目标节点上运行以下命令来完成:
docker swarm init --advertise-addr <MANAGER-IP>
将 <MANAGER-IP>
替换为管理器节点的 IP 地址。
运行此命令后,你将收到一个令牌,可用于将其他节点作为工作节点加入到 Swarm 中。你可以通过在目标节点上运行以下命令将节点作为工作节点加入:
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
将 <TOKEN>
替换为你从 docker swarm init
命令收到的令牌,并将 <MANAGER-IP>
替换为管理器节点的 IP 地址。
你可以通过在管理器节点上运行以下命令来验证 Swarm 的状态:
docker node ls
这将显示 Swarm 中所有节点的列表,以及它们的角色(管理器或工作节点)和状态。
默认情况下,Swarm 中节点之间的通信使用 Raft 协议进行加密。但是,你可以通过启用相互传输层安全(mTLS)身份验证来进一步保护你的 Swarm。
要启用 mTLS,你需要生成并分发必要的证书。你可以在管理器节点上使用 docker swarm ca
命令来完成此操作。
docker swarm ca --rotate
此命令将生成新的根证书和中间证书,并将它们分发给 Swarm 中的所有节点。
既然你已经初始化了 Docker Swarm,让我们进入下一部分:管理和扩展 Swarm 服务。
要将服务部署到 Docker Swarm,可以使用 docker service create
命令。例如,要部署一个 Nginx 网络服务器,可以运行以下命令:
docker service create --name nginx -p 80:80 nginx:latest
这将创建一个名为“nginx”的新服务并将其部署到 Swarm 中。该服务将在主机上公开端口 80,并将其转发到容器中的端口 80。
可以使用 docker service scale
命令来扩展服务的副本数(任务数)。例如,要将“nginx”服务扩展到 5 个副本,可以运行:
docker service scale nginx=5
这将为“nginx”服务创建另外 4 个任务,并且管理器节点将自动在可用的工作节点上调度它们。
可以使用 docker service update
命令来更新服务的配置。例如,要将“nginx”服务更新为使用不同的镜像版本,可以运行:
docker service update --image nginx:1.19 nginx
这将把“nginx”服务更新为使用“nginx:1.19”镜像。
可以使用 docker service ls
和 docker service ps
命令来监控 Swarm 服务的状态。docker service ls
命令将显示 Swarm 中运行的所有服务的列表,而 docker service ps
命令将显示服务内每个任务的状态。
## 列出所有服务
docker service ls
## 列出特定服务的任务
docker service ps nginx
如果你需要对某个节点进行维护,可以将其“排空”,这将导致管理器将在该节点上运行的任何任务重新调度到其他可用节点。你可以使用 docker node update
命令来执行此操作:
docker node update --availability drain <NODE-ID>
将 <NODE-ID>
替换为你要排空的节点的 ID。
以上涵盖了管理和扩展 Docker Swarm 服务的基础知识。有了这些知识,你应该能够部署、扩展和维护在 Docker Swarm 上运行的应用程序。
在本教程结束时,你将对 Docker Swarm 以及如何轻松设置它、管理你的 Swarm 服务和扩展你的容器化应用程序有扎实的理解。利用 Docker Swarm 的强大功能简化你的容器部署和管理流程,确保你的应用程序具有高可用性和可扩展性。