Docker Swarm入门(一)概念

来源:互联网 发布:网络批发玩具平台 编辑:程序博客网 时间:2024/05/17 06:21

Docker Swarm入门()概念

 

楼主本来想写基于dockerRails自动化部署 ,结果楼主赫然发现楼主笨的连rvm命令都不会弄,楼主有两台主机,rvm在一台主机上只能root使用,在另一台主机上只能飞root用户使用.真是醉了

 

还是慢慢的来吧,说不定在将来的某个时刻楼主能开窍.

 

docker sware是一个用于床架docker主机(运行docker守护进程的服务器)集群的工具,是个集群哦,,听起来好牛B的样子哦.使用swarm操作集群,会使用户感觉就像是在一台主机上进行操作.关于docker的话,还有很多新技术,比如docker swarm(docker集群工具),docker machine(docker管理工具),docker compose(docker编排工具)

 

swarm是使用go语言写的,楼主这边有go语言的材料,需要的留言.人少发邮箱,人多发链接.

 
docker swarm是如何工作的呢?

 

swarm进行操作的过程与处理单个docker主机非常相似,无需进行太多修改,他就可以和现有的工具链进行很好的交互.swarm是运行在linux机器上的守护进程,它所绑定的网络接口与独立的docker实例相同(http:/2375或者https/2376).swarm守护进程可以与标准的docker客户端相连接并接受其发送来的信息,之后swarm服务会对来自docker客户端的指令信息进行配置,最后通过代理的方式把信息发送给不同的docker的守护进程,swarm服务同时也监听着标准的docker端口.

 

比如,swarm会基于不同的打包算法并结合docker守护进程再启动时指定好标签(tags),create命令分配到不同的docker守护进程上来执行.因为有了这一特性,用户可以创建由不同的docker主机所构成的分区集群并且将整个集群在逻辑上以一个单一的docker中断的形式公开给用户,swarm使这个过程变得跟简单.

 

swarm的交互”或多或少”的类似于与一个非集群的docker实例的交互,但是也有一个需要注意的地方.swarm并非对所有的docker命令提供一对一的支持.这不仅是由于两种服务在体系结构上的区别,还因为swarm服务刚刚起步不久,有些命令尚未实现.

 

下面说一下载最常见的配置情况下,相关的技术具体如何运行:

1.docker主机服务(服务器上的docker守护进程)通过--label key=value被启动并对网络进行监听.

2.swarm守护进程被启动被指向一个文件,这个文件包含有构成集群的主机以及这些主机所监听的端口列表.

3.swarm余每个docker主机交互并确定他们的标记,健康状态以及资源使用量,并维护后端和他们元数据的列表.

4.客户端通过他的挽留过端口(2375)swarm交互.swarm的交互方式与docker交互的方式类似:创建,销毁,运行,衣服(attach)并获得运行容器的日志以及其他相关内容.

5.当一个命令发出给swarm,swarm:

a) 基于通过的constraint标签,终端的健康程度以及调度算法来决定把命令发送到哪里.

b) 针对合适的docker守护进程执行命令.

c) 返回结果的格式与docker守护进程相同.

 

swarm守护进程本身相当于一个调度器和路由器.它实际上并没有运行容器,也就是说,如果swarm服务停止了,他在终端docker主机上已分配好的容器仍然是开启的.另外,由于他不处理任何网络路由(网络连接需要被直接发送到后端的docker主机上),即时swarm守护进程以为停止了,运行的容器仍然可以使用.swarm从这样的崩溃中苏醒过来的时候,它依然可以查询终端以重建其元数据的列表.

0 0