Docker Swarm实战初探

本文详细介绍了如何在四台CentOS虚拟机上搭建Docker Swarm集群,并进行服务的创建、伸缩、更新和回滚。首先,配置各节点的IP和角色,开启Manager节点的2377端口,然后通过`docker swarm init`初始化集群,接着Worker节点使用`docker swarm join`加入集群。在Manager节点,利用`docker service create`创建nginx服务,通过`docker service scale`调整服务副本数,使用`docker service update`进行服务升级,`docker service rollback`则用于回退服务版本。最后,`docker service rm`删除服务,`docker swarm leave`让节点退出集群。

声明:本文优快云作者原创投稿文章,未经许可禁止任何形式的转载,原文链接

环境

  • 宿主机:macOS 10.15.7
  • 虚拟机平台:Parallels Desktop 15.1.2
  • 虚拟机ISO:CentOS-7-x86_64-Minimal-2009.iso
  • Docker Engine Version:20.10.9

设置方法

先安装好一台虚拟机并在上面安装Docker,再通过克隆获得另外3台虚拟机,如下图所示。

在这里插入图片描述

四台虚拟机的参数如下:

主机IP角色
CentOS Linux 1192.168.199.228Manager
CentOS Linux 2192.168.199.171Worker
CentOS Linux 3192.168.199.201Worker
CentOS Linux 4192.168.199.230Worker

Manager节点需要开启防火墙2377端口,不然Worker可能连接不到Manager。

sudo firewall-cmd --add-port=2377/tcp --permanent
sudo firewall-cmd --reload

操作

在Manager节点进行初始化

docker swarm init

Worker节点加入Manager节点

docker swarm join --token SWMTKN-1-1km0mjm3kf08yil99y7etsqo1oid9g8y6034osr35mvtfrf1m4-b5q4tfskbjpd28v55nsijh3kg 192.168.199.228:2377

在Manager节点查看已有节点

docker node ls

在这里插入图片描述
接下来创建3个nginx服务,创建服务等操作都只需要在Manager节点进行,但是在部署前,先需要保证集群中所有节点都预先有了要使用的镜像

docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

在这里插入图片描述

这时,访问3个Worker节点的IP都可以得到Welcome to nginx的默认主页。

docker service scale可以对一个服务运行的容器数量进行伸缩。

# 指定伸缩数量
sudo docker service scale nginx=5

在这里插入图片描述

docker service update可以对服务进行滚动升级

docker service update --image nginx:1.13.12-alpine nginx

在这里插入图片描述

如果出现问题,可以使用docker service rollback对服务进行版本回退。

docker service rollback nginx

在这里插入图片描述

尝试完成后,使用docker service rm删除服务,Worker节点的服务也就停止了。

Worker节点使用docker swarm leave就可以离开和集群的连接,Manager节点使用docker swarm leave --force解散集群即可。

### Docker Swarm 实战教程最佳实践 #### 服务创建与管理 在 Docker Swarm 中,服务是基本的操作单元。为了启动一个新服务,可以使用 `docker service create` 命令指定所需参数来定义容器运行方式及其配置[^2]。 ```bash docker service create --name my_web \ --replicas=3 \ -p 80:80 \ nginx ``` 此命令会创建名为 `my_web` 的 Nginx 服务实例,在集群内分布三个副本并映射端口 80 到主机上的相同端口。 #### 配置滚动更新策略 当需要对已有的服务执行版本升级或其他变更时,应该谨慎处理以防止业务中断。为此目的而设计的功能之一就是设置合理的更新策略: ```json { "update_config": { "parallelism": 1, "delay": "10s" } } ``` 上述 JSON 片段展示了如何限制每次仅替换单个节点上的任务,并等待十秒再继续下一个;这有助于平稳过渡至新的状态而不影响整体可用性。 #### 使用堆栈文件简化多服务编排 对于涉及多个相互依赖的服务场景来说,编写单独的 CLI 脚本可能变得复杂难懂。借助 Compose 文件格式 v3.x 可以为整个应用程序定义一组关联紧密的任务集合——即所谓的“Stack”,从而实现更高效的管理和部署流程。 ```yaml version: '3' services: web: image: nginx ports: - "80:80" redis: image: redis ``` 该 YAML 文档描述了一个简单的 Web 应用程序架构,其中包含两个独立却又彼此协作的部分:前端服务器 (Nginx) 和缓存数据库 (Redis)。 #### 监控健康状况确保高可靠性 保持系统的稳定性和响应速度至关重要。因此建议利用内置选项监控各个组件的工作情况,及时发现潜在问题以便采取相应措施加以解决。例如下面这段代码片段就演示了怎样为 MySQL 数据库设定自检机制: ```bash docker service update --health-cmd="mysqladmin ping" --health-interval=5s db_service_name ``` 这条指令告诉 Swarm 守护进程每隔五秒钟向目标容器发送一次 SQL 连接请求作为心跳信号源;一旦连续三次失败则自动重启该实例直至恢复正常为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值