OpenStack將提供對Docker的支持
最近來自Docker官方網站的文章提到,從OpenStack Icehouse開始,Docker將與Heat集成。 而最早在OpenStack Havana 版本中,Docker 已經作為 Nova driver方式與OpenStack集成。本文將首先簡單介紹Docker,然后介紹其與OpenStack 的集成。
Dock可以用來:
- 自動化打包和部署任何應用
- 創建一個輕量級私有PaaS云
- 搭建開發測試環境
- 部署可擴展的Web應用
Docker 發展迅速, 它的貢獻者PaaS云提供商 https://dotcloud.com 2014年1月份獲得了B輪1500萬美元融資,Docker社區也比較活躍,Docker中文社區最近也在國內多個城市相繼成功舉行Docker meet up。關于docker更多詳細介紹詳見 http://www.openstack.cn/p828.html
Docker與Nova集成
在OpenStack Havana版本中,Docker通過在Nova中以driver的形式與OpenStack的集成,這種實現把Docker容器當作虛擬機來使用。代碼鏈接為 https://github.com/openstack/nova/tree/stable/havana/nova/virt/docker
但在香港OpenStack設計峰會上決定從Nova項目移出Docker driver,放入StackForge項目開發。Openstack的每個項目起初都在StackForge 培育,然后申請進入Incubated項目,考察期滿且通過技術委員會投票正式成為Openstack集成項目。OpenStack 項目中Docker driver的主要維護者給出的解釋是:“關于這個driver我們已經收到積極的反饋,缺少與Cinder、Neutron的集成是我們面臨的障礙,在 StackForge中,允許我們快速迭代開發,持續集成新功能,以便在OpenStack Juno 版本中重新引入” 所以從Icehouse版本開始,Docker driver 代碼樹為https://github.com/stackforge/nova-docker
下面是Nova Docker driver 與OpenStack集成流程圖。
Nova Docker driver 嵌入一個微小的HTTP 客戶端 與 Docker內部REST API 通信,使用HTTP API 來控制Docker容器與獲得容器信息。通過配置Glance,Docker 就能從Glance獲得跟上傳鏡像。關于Docker與Nova集成詳細配置方法,請詳見https://wiki.openstack.org/wiki/Docker
Docker與Heat集成
在OpenStack中,社區更傾向于使 用Heat來協調使用Docker,而不是在Nova中把它當作一種hypervisor 使用。 Nova Docker driver這種方式有些缺點,例如,標準的API 擴展使用虛擬機特有的功能,但這些功能對于Docker并不適用,而且把Docker當作虛擬機來使用,Nova很難利用Docker有用的功能,例如連接容器(主要指Docker容器間通信),基于以上的原因,Heat是更好的選項。
Heat在OpenStack 中提供資源協調功能,與AWS 的 CloudFormation 兼容,允許用戶上傳描述資源的模版。使用Heat的插件機制,用戶可以基于傳統OpenStack部署方式部署跟管理Docker容器。Heat 插件已經被OpenStack 社區接受,將包含在Icehouse版本中。代碼鏈接為https://github.com/openstack/heat/tree/master/contrib/docker
下面的例子顯示如何使用Heat來協調使用Docker:
- description: Single compute instance running cirros in a Docker container.
- resources:
- my_instance:
- type: OS::Nova::Server
- properties:
- key_name: ewindisch_key
- image: ubuntu-precise
- flavor: m1.large
- user_data: #include https://get.docker.io
- my_docker_container:
- type: DockerInc::Docker::Container
- docker_endpoint: { get_attr: [my_instance, first_address] }
- image: cirros
在上面的例子里,我們只需要添加更多類似”my_docker_container“的片段,就可以創建多個容器并把它們連接起來,它們將不受限于OpenStack API,可以充分利用Docker Remote API。
結束語
Docker相對于虛擬機由較高的資源利用率,可以秒級部署, 跨平臺打包部署應用。在眾多PaaS平臺產品中發展迅速,獲得社區認可與支持,與多個知名項目合作集成。 而與Heat項目的集成,為打通IaaS,PaaS 平臺提供了很好的途徑。期待Docker在OpenStack Juno版本中與OpenStack Heat項目的更好集成。
作者:@郭長波, EasyStack工程師