Docker Swarm 是 Docker 官方推出的容器编排工具,它允许我们通过创建一个 Docker 集群来管理多个 Docker 引擎节点。利用 Docker Swarm 来管理多个 Docker 容器的部署和运维,可以大大提高生产环境下的部署和运维效率和可靠性。
在本文中,我们将介绍 Docker Swarm 的集群管理及服务部署实践。它将详细介绍如何创建 Docker Swarm 集群、如何在集群中创建和管理服务以及如何在 Swarm 集群中运行容器。
准备工作
在开始实践 Docker Swarm 之前,您需要准备好以下环境:
- Docker:已经安装且可以正常运行。
- 多个 Docker 引擎节点:您可以在本地机器上使用 Docker Machine 来轻松创建多个 Docker 引擎节点。
创建 Docker Swarm 集群
在这个示例中,我们将使用 Docker Machine 在本地创建 3 个 Docker 引擎节点,并将它们组成一个 Docker Swarm 集群。
在命令行中,使用以下命令创建 3 个 Docker 引擎节点:
docker-machine create --driver virtualbox node1 docker-machine create --driver virtualbox node2 docker-machine create --driver virtualbox node3
安装好 Docker 后,执行以下命令来初始化 Swarm:
docker swarm init --advertise-addr $(docker-machine ip node1)
初始化成功后,在控制台会看到类似输出:
Swarm initialized: current node (XXXX) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-XXX ... To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
接下来,在第二个节点 node2 上运行以下 Docker 命令来加入到 Swarm 中:
docker swarm join --token <token> <ip>:<port>
其中的 token
和 ip:port
信息从上述的输出中获取。
最后在第三个节点 node3 上也通过类似的命令来加入到 Swarm 中。
这样我们就创建了一个 3 节点的 Swarm 集群。
在 Swarm 中创建和管理服务
在 Swarm 中,您可以创建和管理服务。服务是一组具有相同镜像定义和在多个 Docker 引擎上运行的副本数量的容器。
下面是一些在 Swarm 中创建和管理服务的基础命令:
- 创建服务:
docker service create <options> <image>
- 列出所有服务:
docker service ls
- 删除服务:
docker service rm <service>
- 缩放服务:
docker service scale <service>=<number>
- 更新服务:
docker service update <service> <options>
在这个示例中,我们将创建一个名为 web
的服务:
docker service create --name web --replicas 3 -p 80:80 nginx:latest
这将在 Swarm 集群中创建一个名为 web
的服务,它将运行 3 个 nginx 容器,并暴露容器的 80 端口作为服务的 80 端口。
您可以使用 docker service ls
命令查看所有运行的服务,并使用 docker service ps <service>
命令查看特定服务的任务。
在 Swarm 集群中运行容器
在 Swarm 集群中,您还可以使用命令docker run
来运行单个容器。在 Swarm 中,容器会自动分配到一个对它可用的节点上。
例如,要在 Swarm 集群中运行一个名为 hello-world
的 Docker 容器,可以使用以下命令:
docker run --rm hello-world
结论
通过本文的学习,您现在了解了 Docker Swarm 集群管理及服务部署实践。您已经掌握了如何在本地创建多个 Docker 引擎节点来组成集群、如何在 Swarm 中创建和管理服务以及如何在 Swarm 集群中运行容器。
除此之外,Docker Swarm 还有很多强大的功能,如负载均衡、服务发现等,我们可以根据自己的具体需要进行深入学习。
祝实践愉快!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/673095f7eedcc8a97c9257b9