Docker三剑客
所属分类 docker
浏览量 613
DockerMachine DockerCompose DockerSwarm
Docker原生提供的三大编排工具,用来部署管理多个宿主机的Docker容器集群
DockerMachine 是一个命令行工具,在远程的机器上安装Docker
Docker 的最佳实践是一个容器只运行一个进程
运行多个微服务就要运行多个容器 ,
多个容器协同工作需要一个有效的工具来管理,
容器编排工具 定义这些容器如何相互关联
DockerCompose
docker-compose.yml
docker-compose up 运行完整的应用
DockerCompose 是在单个服务器或主机上创建多个容器的工具
DockerSwarm 可以在多个服务器或主机上创建容器集群服务,将一群Docker宿主机抽象成一个单一的虚拟主机
Swarm 工作流程
Docker客户端发送请求给Swarm
Swarm守护进程是一个 调度器(scheduler)加 路由器(router)
Swarm处理请求并根据调度策略发送至相应的Docker节点
Docker节点执行相应的操作并返回响应
节点是Swarm集群的最小资源单位,每个节点实际上都是一台Docker主机(物理机或虚拟机)
Swarm集群中的节点分为两种
管理节点(manager nodes)
负责响应外部对集群的操作请求,并维护集群中的资源,监控集群状态,分发任务给工作节点
一般推荐每个集群设置5~7个管理节点
工作节点(worker nodes)
负责执行管理节点安排的具体任务,为了提高资源利用率
默认管理节点自身也是工作节点
每个工作节点上运行代理(agent)来汇报任务完成情况
Swarm集群是典型的主从(master-slave)架构
通过发现服务来选举中心管理节点,各个节点上运行代理接受中心管理节点的统一管理,
集群会自动通过Raft协议分布式选举出中心管理节点,无须额外的发现服务支持,避免了单点的瓶颈问题,
同时也内置了DNS的负载均衡和对外部负载均衡机制的集成支持
Swarm的配置和状态信息保存在一套位于所有管理节点上的分布式etcd数据库中
该数据库运行于内存中,并保持数据的最新状态
任务是Swarm集群中最小的调度单位,即一个指定的应用容器
当用户通过创建或更新服务声明一个期望状态的服务时,调度器通过调度任务来实现期望的状态
例如指定一个服务始终保持运行3个HTTP实例,调度器就创建3个任务,每个任务运行一个容器
容器是任务的实例化
如果一个 HTTP 容器之后出现故障停止,此任务被标志为失败,调度器就会创建一个新的任务来生成一个新容器
任务是一个单向机制,单向地执行一个系统状态,如assigned、prepared、running等
如果一个任务失败了,调度器会删除这个任务和它的容器,然后创建一个新的任务来替换它
上一篇
下一篇
python http server docker 镜像制作
Python pip 安装
python pip 配置国内镜像
特定类型文件复制功能 java实现
Python3中的 pyi 文件
联邦学习框架FATE简介