简单看了一下docker 关于集群部署、运维自动化方面的一点文章,收集到了三个工具。

Swarm  Machine  Compose 三个工具。这三个工具是算是docker 在运维这块的尝试吧,下面简单介绍一下,欢迎拍砖。

     Swarm 是一个跨系统、跨主机的docker 容器管理工具。也是采用C/S结构。

      

   主要分为两块,swarm节点以及node 节点。swarm 节点是中心节点,具有全球唯一的标识符,通过 swarm create 创建。它负责接受client 的请求。基本兼容docker API.

   涵盖了 服务发现(挺多的,具体的策略后面还需要继续补充) 决策、节点过滤等。它负责和具体的docker daemon 通信,并根据daemon 占用的cpu 以及内容决定将client 请求发送

   到特定的daemon.

   

  Machine 的机制

    个人决定docker-machine 真的是一个很牛逼的东西。它能够帮你在今天云计算的大潮中,快速的在你购买的云托管(IaaS)服务商的机器上快速的部署你的应用。

   

docker-machine 首先不是一个c/s结构,它在运行docker-machine 的相关命令后,就会退出。所有关于命令产生的中间配置、文件等持久话到宿主机器上。

它屏蔽了各个服务商提供的环境的差异。在接受请求后,利用传入的参数创建对应host 的数据结构并持久化到宿主机器上。

利用driver 针对不同环境创建对应的虚拟机,目前支持的好像只有两种,ubuntu 和boot2docker(一个24m 的小系统。)

然后利用provisioner 在创建的虚拟机上初始化docker 环境。

图中host 纪录了很多关于虚拟机、以及 docker daemon的配置、环境等。

 

  compose 这个相对比较好理解, docker client 一次只能处理一个container, 这对于那些一个项目依赖多个模块来说还是不容易的。

于是compose 通过一个配置文件来管理这个项目内的多个容器之间的关系. docker-py 一个python 工具就是compose 用来和docker-daemon通信的工具。

 compose 中一般来说,是一个service 对应一个container . compose 可能更多的是针对单机的容器来管理的。

    有两个缺点:  1  docker-py 对 DOCKER API 支持的程度不高。

                       2  service之间的依赖不好解决(compose 只能通过init 判断是否启动成功,内部的服务没有办法判断)