十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Docker Swarm集群搭建与管理指南
创新互联公司主要从事网站制作、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务汶上,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
在现代化的IT架构中,容器化技术是不可避免的发展趋势。Docker作为其中的领军企业,其技术也成为了大家广泛关注的焦点。其中,Docker Swarm作为Docker自带的编排工具,可以帮助我们轻松的搭建和管理容器集群,本文将详细介绍Docker Swarm的搭建与管理方法。
环境准备
在开始之前,我们应当准备一台或多台Linux机器作为Docker Swarm的节点。我们选择了三台虚拟机,分别作为管理节点和两台工作节点。
其中,管理节点需要满足以下要求:
- 安装最新版Docker引擎
- 开启防火墙对Swarm端口进行放行
- 确保能够互相ping通其他节点
工作节点则需要满足以下要求:
- 安装最新版Docker引擎
- 确保能够互相ping通其他节点
创建Swarm
在管理节点上,执行以下命令来初始化Swarm:
$ sudo docker swarm init --advertise-addr其中,为管理节点的IP地址。
执行成功后,会输出类似以下内容的信息:
Swarm initialized: current node (xge27bqh6ttz721pkw2zky1h5) is now a manager.To add a worker to this swarm, run the following command: docker swarm join --token :2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.在其中,为Swarm节点的令牌,工作节点需要使用它来加入到Swarm中。我们需要将这个令牌保存下来,后续需要使用。
加入节点
在工作节点中,使用如下命令加入Swarm:
$ sudo docker swarm join --token :2377其中,为之前管理节点初始化Swarm时生成的令牌,为管理节点的IP地址。
加入成功后,在管理节点上执行以下命令,查看加入节点的状态:
$ sudo docker node ls输出类似以下内容的信息:
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSIONxge27bqh6ttz721pkw2zky1h5 * manager-1 Ready Active Leader 18.09.0vacf9s9l2gur1g1w7tndmou3u worker-1 Ready Active 18.09.0yfvjuph0g4sw6d92e2p2mdk2f worker-2 Ready Active 18.09.0在其中,*表示当前我们的管理节点,而worker-1和worker-2则是两个已经加入到Swarm中的工作节点。
创建服务
我们使用如下命令来在Swarm中创建一个服务:
$ sudo docker service create --name nginx --replicas 3 --publish 80:80 nginx其中,--name参数指定了服务的名称,--replicas参数指定了需要创建的实例数量,--publish参数指定了服务对外暴露的端口映射,nginx则为需要部署的镜像名称。
执行成功后,在管理节点上使用如下命令查看创建的服务状态:
$ sudo docker service ls输出类似以下内容的信息:
ID NAME MODE REPLICAS IMAGE PORTSqqk1n7sb4toi nginx replicated 3/3 nginx:latest *:80->在其中,我们可以看到当前Swarm中有一个名为80/tcpnginx的服务,已经成功创建了3个实例。对服务进行扩展
我们可以使用如下命令来对服务进行扩展:
$ sudo docker service scale nginx=5
其中,nginx=5表示需要将nginx服务的实例数量扩展到5个。执行成功后,我们可以在管理节点上使用以下命令查看服务的状态:
$ sudo docker service ps nginx
输出类似以下内容的信息:ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSz0jrd6k7j73b nginx.1 nginx:latest worker-2 Running Running 2 minutes ago g4mm9yv7ki10 nginx.2 nginx:latest worker-1 Running Running 2 minutes ago v6uqjvqgpn3g nginx.3 nginx:latest worker-2 Running Running 2 minutes ago 0bi9ttx5f4t9 nginx.4 nginx:latest worker-1 Running Running 2 minutes ago uz8p208bzcsy nginx.5 nginx:latest worker-2 Running Running 2 minutes ago
在其中,我们可以看到nginx服务成功扩展到了5个实例。对服务进行伸缩
我们可以使用如下命令来对服务进行伸缩:
$ sudo docker service update --replicas 7 nginx
其中,--replicas参数指定需要扩展到的实例数量,nginx则为我们需要伸缩的服务名称。执行成功后,我们可以在管理节点上使用以下命令查看服务的状态:
$ sudo docker service ps nginx
输出类似以下内容的信息:ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSz0jrd6k7j73b nginx.1 nginx:latest worker-2 Running Running 2 minutes ago g4mm9yv7ki10 nginx.2 nginx:latest worker-1 Running Running 2 minutes ago v6uqjvqgpn3g nginx.3 nginx:latest worker-2 Running Running 2 minutes ago 0bi9ttx5f4t9 nginx.4 nginx:latest worker-1 Running Running 2 minutes ago uz8p208bzcsy nginx.5 nginx:latest worker-2 Running Running 2 minutes ago t6k07shm8ddn nginx.6 nginx:latest worker-1 Running Running about a minute ago 4nyoq7b67r0c nginx.7 nginx:latest worker-1 Running Running about a minute ago
在其中,我们可以看到nginx服务成功伸缩到了7个实例。删除服务
我们可以使用如下命令来删除服务:
$ sudo docker service rm nginx
其中,nginx为我们希望删除的服务名称。执行成功后,在管理节点上使用如下命令查看服务的状态:
$ sudo docker service ls
输出中不再包含nginx服务。彻底关闭Swarm
我们可以使用如下命令来关闭Swarm:
$ sudo docker swarm leave --force
其中,--force参数表示强制离开Swarm。执行成功后,我们可以在管理节点上使用如下命令查看节点状态:
$ sudo docker node ls
输出中不再包含当前节点。总结
本文详细介绍了Docker Swarm的搭建与管理方法,包括了节点加入、服务创建、扩展、伸缩、删除以及Swarm关闭等基本操作。希望读者们可以根据本文的指南,成功的搭建和管理自己的Docker Swarm集群。