该笔记大部分搬运B站狂神说Java的Docker进阶,顺便把图文合并记录,便于回顾,仅用于学习!
视频地址:https://www.bilibili.com/video/BV1kv411q7Qc 作者真的非常好,别白嫖,记得三连
如有侵权,请联系删除!
1.环境准备
利用VW克隆的技术!!!
2. Swarm集群搭建
在docker-1中操作:
初始化节点
[root@localhost ~]# docker swarm init --advertise-addr 自己的私网ip
获取令牌
docker swarm join-token manager
docker swarm join-token worker
在docker-2/3/4操作
加入其他节点
加入节点出现错误:
解决方案:https://www.cnblogs.com/shenjianping/p/12264103.html
成功加入节点
docker swarm join --token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ip:2377
查看swarm集群节点
任务与调度
swarm manager:
-- 1、API:这个请求直接由swarm manager的API进行接收,接收命令并创建服务对象。
-- 2、orchestrator: 为服务创建-一个任务。
-- 3、allocater: 为这个任务分配IP地址。
-- 4、dispatcher: 将任务分配到指定的节点。
-- 5、scheduler: 在该节点中下发指定命令。
worker node: 接收manager任务后去运行这个任务。
-- 1、container: 创建相应的容器。
-- 2、worker: 连接到调度程序以检查分配的任务
--3、executor: 执行分配给工作节点的任务
3、executor: 执行分配给工作节点的任务
3. 工作模式
官网网址:https://docs.docker.com/engine/swarm/how-swarm-mode-works/nodes/
节点是如何工作的?
service
服务副本与全局服务
4. 命令
命令使用可参考:https://www.cnblogs.com/qiuhom-1874/p/13169070.html
5. Raft协议
双主双从:假设一个节点挂了!其他节点是否可以用!
Raft协议:保证大多数节点存活才可以用。至少是大于1台 ,集群至少大于3台!
实验:
1、将docker1机器停止。宕机!双主,另外一个主节点也不能使用了!
2、将其他节点断开!
docker-3宕机!
3、work就是工作点、管理节点的操作!3台机器为了设置管理节点。
十分简单:集群,可用! 3个主节点。> 1台管理节点存活!
Raft协议:保证大多数节点存活,可以使用,高可用!
6. 部署服务
使用 docker service
命令来管理 Swarm 集群中的服务,该命令只能在管理节点运行。
6.1 创建服务
[root@localhost ~]# docker service create -p 8888:80 --name my_nginx nginx
docker run:容器启动!不具有扩缩容器
docker service:服务!具有扩缩容器,滚动更新!
6.2 查看服务
# 使用 docker service ls 来查看当前 Swarm 集群运行的服务。
[root@localhost ~]# docker service ps my_nginx
# 使用 docker service ps 来查看某个服务的详情。
[root@localhost ~]# docker service ls
虽然是在docker-1机器上创建的,但1、3、4上都没有这个docker进程
6.3 更新服务
[root@localhost ~]# docker service update --replicas 3 my_nginx
随机分配
6.4 动态扩缩容
- 当业务处于高峰期时,我们需要扩展服务运行的容器数量。
- 当业务平稳时,我们需要减少服务运行的容器数量。
也可以用 --replicas
[root@localhost ~]# docker service scale my_nginx=5
6.4 移除服务
[root@localhost ~]# docker service rm my_nginx
7. 概念总结
swarm
集群的管理和编号。docker可以初始化一 个swarm集群,其他节点可以加入。(管理、 工作者)
Node
就是一个docker节点。多个节点就组成了一个网络集群。(管理、 工作者)
Service
任务,可以在管理节点或者工作节点来运行。核心。!用户访问!
Task
容器内的命令,细节任务!
8. Docker Stack(了解)
9. Docker Secret(了解)
安全!配置密码!证书!
10. Docker Config(了解)
配置!