Docker进阶Docker Swarm
4.3docker service update --replicas
前言
此搭建环境对电脑配置有一定的要求,vmware搭建了4台centos7
官网地址:https://docs.docker.com/engine/
1.环境准备
systemctl start docker 打开docker
systemctl stop docker 关闭docker服务
sudo systemctl daemon-reload 守护进程重启
systemctl restart docker 重启docker服务
systemctl stop firewalld.service 关闭防火墙
firewall-cmd --zone=public --list-ports 查看开放的端口
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改静态ip
service network restart #重启网络服务
docker stop $(docker ps -a -q) 停止所有的container
docker rm $(docker ps -a -q) 删除所有container
docker rmi $(docker images -q) 要删除全部image
(1)首先需要安装一台centos7虚拟机,为了快捷,剩下的进行克隆即可
https://www.cnblogs.com/pengboke/p/13063168.html#node3
(2)克隆
docker-1--->管理--->克隆
一直下一步,再克隆类型的时候选择创建完整克隆
名称和位置自己选择
点击完成,稍等几分钟
(3)查看环境
xhell连接四台linux
(4)检查防火墙
Docker Swarm默认2377端口
要么关闭防火墙,要么放行2377端口,设置放行完2377端口,需要重启后生效
firewall-cmd --zone=public --add-port=2377/tcp --permanent #放行2377端口
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #重启防火墙
2.Docker Swarm
官网地址:https://docs.docker.com/engine/swarm/
管理节点
工作节点
Raft一致性算法
(1)docker swarm 帮助命令
docker swarm --help
(2)初始化节点
我这里将192.168.188.180作为管理节点,然后进行初始化
docker swarm init --adversise-addr 192.168.188.180
(3)docker-2加入集群
docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-3g05ke0bisboi35gizd690zc9 192.168.188.180:2377
docker-1节点查看 docker-2节点已经加入
docker node ls
(4)查看工作节点的token(创建工作节点时需要用到生成的命令)
docker swarm join-token worker
(5)查看管理节点token(创建管理节点时需要用到生成的命令)
docker swarm join-token manager
(6)docker-3加入工作节点
(7)docker-4加入管理节点
一开始加入docker-1节点会失败,原因是作为主节点需要开放2377端口
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --reload
docker swarm join --token SWMTKN-1-37mj0bpx6nq8u5d452zryhxhzqdcqnrxb53sfhezrs7lvqvvmf-biiz6y5d3lktavopnuuvy91st 192.168.188.180:2377
docker node ls
3.Raft协议
Raft协议:保证大多数节点存活才可以使用用。只要>1,集群必须大于三台
systemctl stop docker
systemctl stop docker.socket
docker node ls
(2)查看docker-4
不可用
重启后集群恢复
systemctl start docker
4.Docker Swarm 弹性、扩缩容、集群
docker脱离编排没有任何意义
告别docker ruin使用docker-compose up启动一个项目
集群:swarm docker service
容器=>服务
容器=>服务=>副本
redis服务=>10个副本
docker run 容器启动!不具有扩缩容器
docker service 服务!具有扩展容器!滚动更新!
(1)docker service --help
创建服务、动态扩展服务、动态更新服务
(1)创建nginx服务
docker service create -p 8888:80 --name ngx01 nginx
(2)查看服务ngx01
docker service ps ngx01
(3)显示有关一个或多个服务的详细信息
docker service inspect ngx01
(4)查看容器
在docker-1上可以看到ngx01容器
docker ps
在docker-2、docker-3、docker-4上进行查看不到ngx01容器
4.3docker service update --replicas
动态更新3个nginx副本
(1)docker service update --replicas 3 ngx01
(2)查看docker-1、docker-2、docker-3、docker-4
(1)docker service update --replicas 10 ngx01
(2)查看docker-1、docker-2、docker-3、docker-4
docker ps
(1)docker service scale ngx01=5
(2)查看docker-1、docker-2、docker-3、docker-4
docker ps
5.概念总结
swarm
集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入。(管理、工作者)
Node
就是一个docker节点。多个节点就组成了一个网络集群。(管理、工作者)
Service
任务,可以在管理节点或者工作节点来运行。
Task
容器内的命令,细节任务!
(1)docker service inspect ngx01
"PublishMode": "ingress"
ingress:特殊的Overlay网络!负载均衡的功能!
Overlay可以使多个相互,ping不同的机器联通并变成一个整体
docker-compose 单机部署项目!
Docker Statck 集群部署
单机模式下,我们可以使用 Docker Compose 来编排多个服务,而 Docker Swarm 只能实现对单个服务的简单部署。
通过 Docker Stack 我们只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排
什么是secret
- 用户名密码
- SSH Key
- TLS认证
- 任何不想让别人看到的数据
secret management
- 存在swarm manager 节点raft database里面
- secret 可以assign给一个service,这个service就能看到这个secret
- 在container内部secret看起来像文件,但是实际是在内存中
docker secret --help
Docker Config
- Configs 是安装在容器的文件系统中,而不是使用 RAM 磁盘。
- Configs 可以随时添加或删除,服务可以共享一个配置。
- Configs 可以与 Environments 或 Labels 结合使用,以获得最大的灵活性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!