cloud foundry warden模块的一些知识点

来源:互联网 发布:淘宝拍卖房 编辑:程序博客网 时间:2024/06/02 01:27

         在cloud foundry中,应用实际是运行在container中的,可以将container理解为一个虚拟的操作系统,里面包含了应用运行所需要的基本资源,包括cpu、磁盘、内存、网络以及应用运行所需的runtime,每个应用运行于自己的container中,从而实现了物理资源的隔离。

         warden本身是可以单独运行的,其项目源代码在:https://github.com/cloudfoundry/warden,安装过程也很简单,参考:

https://github.com/cloudfoundry/warden/blob/master/warden/doc/getting_started.ubuntu.md,安装完成后可以直接在命令行客户端对warden进行操作,help可以列出所有可执行命令,"command" --help可以查看该命令的具体使用方法,一些操作命令:

1、create 

      用于创建container,执行完成后会返回一个handle,是cantainer的标识。create 有个--bind_mounts选项,使用方式为 

create --bind_mounts[0].src_path "宿主机路径" --bind_mounts[0].dst_path "container的路径" --bind_mounts[0].mode "RW或者RO" ,一直觉得这个选项应该是实现container和宿主机之间的文件映射的,但是实际操作过程中除了在container内dst_path指定的路径创建对应的文件夹外,并不能实现文件共享,而在完整的cf环境中bind_mounts的两个路径都是droplet所在的位置(是不是这样指定了之后就能直接将dea或者cc上的droplet共享到container内,然后解压实现部署?),具体实现什么功能,后续还得看代码。

----------11.17更新,bind_mounts选项的确可以实现宿主机和container之间的文件共享,在创建完成的continer根目录下,执行./bin/wsh即可查看


2、还有一些命令,如copy_in, copy_out, run, spawn等,理解起来都不是很难,按照help提示即可,值得一提的是,在完整的cf平台中,dea也是通过获取warden client来给warden server发送命令来完成对container的操作。

3、warden client 和warden server之间的通信使用的是beefcake, beefcake是google开源项目protobuff的ruby支持库,用于根据protobuff规范生成对应的数据序列化以及解析代码

4、应用部署完成并成功启动后会生成一个container,位于/tmp/warden/container目录下,每个container由两部分组成,只读部分位于/var/vcap/packages/rootfs_lucid64,时个          精简的64位ubuntu系统,可以使用chroot .进入该系统做定制,可读写部分部分由warden提供,还有部分是在执行过程中动态生成的。

5、对于创建完成的container,切换至tmp/warden/containers/"handle"下,执行./bin/wsh即可以root用户进入container,可以查看完整的container系统。


         

0 0
原创粉丝点击