您的位置:首页 > 其它

cloud foundry warden模块的一些知识点

2014-10-31 08:33 260 查看
在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系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: