Docker 是一个开源的应用容器引擎,用于将应用程序打包成一个独立的容器,并可以进行部署,运行和管理。Docker Swarm 是 Docker 官方提供的一个集群管理工具,能够实现对 Docker 单机容器的集中管理和部署。本文将详细介绍 Docker Swarm 的使用方法。
什么是 Docker Swarm
Docker Swarm 是一个 Docker 的原生集群管理工具,它提供了一种基于 Docker API 的原生集群解决方案。它将 Docker 主机组合成一个虚拟的 Docker 主机,从而可以在多台物理机上部署和管理 Docker 容器。Docker Swarm 的主要目的是为了解决 Docker 应用的高可用性和可扩展性问题。
Docker Swarm 的架构
Docker Swarm 的架构由以下几个组成部分:
- Leader 节点:负责集群管理和调度工作。
- Follower 节点:负责执行 Leader 节点分配的任务。
- Manager 节点:是一个特殊的节点,可以执行 Leader 节点和 Follower 节点的任务,并且可以进行集群管理。
Docker Swarm 的使用
1. 创建 Swarm 集群
在创建 Swarm 集群之前,需要先准备好 Docker 环境,并且确保所有节点的 Docker 版本均为 1.12 或以上版本。创建 Swarm 集群的命令如下:
docker swarm init --advertise-addr <manager-node-IP>
其中 <manager-node-IP>
是当前节点的 IP 地址,注意这里仅需要在 Manager 节点执行该命令即可,执行后会自动生成一个 Docker Swarm 的唯一标识。
2. 加入 Swarm 集群
在加入 Swarm 集群之前,需要确保当前节点的 Docker 版本和 Manager 节点的 Docker 版本一致,同时也需要知道 Manager 节点的 IP 地址和加入 Swarm 集群的令牌。加入 Swarm 集群的命令如下:
docker swarm join --token <token> <manager-node-IP>:<port>
其中 <token>
是加入令牌,<manager-node-IP>
是 Manager 节点的 IP 地址,<port>
是 Docker Swarm 的端口,默认值为 2377。
3. 创建服务
创建服务是 Docker Swarm 的关键功能之一,可以让用户轻松地在集群中部署和管理应用程序。创建服务的命令如下:
docker service create --name <service-name> --replicas <replica-num> --publish <port-for-service>:<port-in-container> <image-name>
其中 <service-name>
是服务的名称,<replica-num>
是需要创建的副本数量,<port-for-service>
是服务所需的端口,<port-in-container>
是容器中实际运行应用程序的端口,<image-name>
是 Docker 镜像的名称。
4. 查看服务
通过以下命令可以查看当前所有服务的状态:
docker service ls
通过以下命令可以查看服务的详细信息:
docker service ps <service-name>
其中 <service-name>
是服务名称。
5. 扩展服务
通过以下命令可以扩展服务的副本数量:
docker service scale <service-name>=<replica-num>
其中 <service-name>
是服务名称,<replica-num>
是需要创建的副本数量。
6. 更新服务
通过以下命令可以更新服务:
docker service update <service-name> --image <new-image-name>
其中 <service-name>
是服务名称,<new-image-name>
是更新后的 Docker 镜像名称。
7. 删除服务
通过以下命令可以删除服务:
docker service rm <service-name>
其中 <service-name>
是服务名称。
Docker Swarm 示例
以下是一个简单的示例,演示如何使用 Docker Swarm 在集群中运行一个 Web 应用。
1. 创建 Swarm 集群
在 Manager 节点上执行以下命令:
$ docker swarm init --advertise-addr 192.168.1.1 Swarm initialized: current node (amdky999lap2mq1jb8txf0lcx) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-2t1zzzwwwxxxxd12t48bxnytuzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxws1-abc123def456ghi78j9kd10123a4l56m7n8op9qr1 192.168.1.1:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
在 Follower 节点上执行以下命令:
$ docker swarm join --token SWMTKN-1-2t1zzzwwwxxxxd12t48bxnytuzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxws1-abc123def456ghi78j9kd10123a4l56m7n8op9qr1 192.168.1.1:2377
2. 创建服务
在 Manager 节点上执行以下命令:
$ docker service create --name my-web --replicas 3 --publish 8080:80 nginx
3. 查看服务
在 Manager 节点上执行以下命令:
$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS d541ll4nldxg my-web replicated 3/3 nginx:latest *:8080->80/tcp
通过浏览器访问 192.168.1.1:8080,即可看到运行的 Web 应用程序。
4. 扩展服务
在 Manager 节点上执行以下命令:
$ docker service scale my-web=5
5. 更新服务
在 Manager 节点上执行以下命令:
$ docker service update my-web --image nginx:1.17.4
6. 删除服务
在 Manager 节点上执行以下命令:
$ docker service rm my-web
结论
Docker Swarm 是一种非常强大的集群管理工具,可以帮助用户实现高可用性和可扩展性的应用程序部署。通过本文的介绍,相信读者已经可以轻松地使用 Docker Swarm 来管理和部署应用程序了。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672ec045eedcc8a97c8aad82