docker 介紹 (3-1): docker on OpenStack
嚴格上來說, docker和OpenStack是兩種不同的服務,
OpenStack提供的是虛擬機(Virtual Machine)的調度與管理,
docker提供的是容器(Container)的封裝與隔離機制,
然而, 對於一般使用者而言, 兩者皆提供一種獨立的, 可擴充的運算資源,
因此, 也有許多比較文章[7], 嘗試比較docker和OpenStack適用的範圍.
事實上, OpenStack也開始思考如何結合docker的運算架構,
提供容器作為一種服務(Containers-as-a-Service) [1, 2],
在OpenStack中, 有三種不同的方法和docker結合:
Nova中的Docker driver [1], heat中的Docker driver以及Kilo版中推出的Magnum Project [2].
主要的差異在於容器開啟的位置是實體機(physical machine)還是虛擬機.
其中, Nova Docker driver將docker視作一種新型態的hypervisor,
因此, 所開啟的容器, 也就可以視為一種虛擬機,
可以調用Nova對於虛擬機的調度管理以及網路的隔離,
當然, 也可以用像是heat的管理機制, 我們可以看到架構圖如下:
直接把容器當作虛擬機, 直接的好處是能夠套用到原本的OpenStack架構,
然而, 卻也犧牲了一些docker的特殊功能,
例如, 像是之前提到的AUFS的image檔的關聯性與階層機制,
為了符合OpenStack中Glance對於映象檔的規範, 而必須捨去.
考慮到Nova docker-driver對於許多docker功能不支援,
Heat docker-driver直接和docker API溝通, 不透過Nova或是其他專案,
架構如下:
在架構圖中, 我們可以看到Nova和docker是獨立的元件,
使用Heat docker-driver的好處, 是支援docker的完整API,
缺點則因為事實上只使用了OpenStack中的Heat管理,
因此, 網路部分仍是走docker的方案, 隔離性較差.
考慮到雲端大規模的使用環境, 使用者還必須自行指定開啟docker的資訊,
(因為沒有Nova Agent的階層化架構)
[1] https://wiki.openstack.org/wiki/Docker
[2] https://wiki.openstack.org/wiki/Magnum
[3] https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-1/
[4] https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-2/
[5] http://dockone.io/article/445
[6] http://www.csdn.net/article/2015-11-07/2826146
[7] http://www.techrepublic.com/article/openstack-is-overkill-for-docker/
[8] https://docs.docker.com/machine/drivers/openstack/
OpenStack提供的是虛擬機(Virtual Machine)的調度與管理,
docker提供的是容器(Container)的封裝與隔離機制,
然而, 對於一般使用者而言, 兩者皆提供一種獨立的, 可擴充的運算資源,
因此, 也有許多比較文章[7], 嘗試比較docker和OpenStack適用的範圍.
事實上, OpenStack也開始思考如何結合docker的運算架構,
提供容器作為一種服務(Containers-as-a-Service) [1, 2],
在OpenStack中, 有三種不同的方法和docker結合:
Nova中的Docker driver [1], heat中的Docker driver以及Kilo版中推出的Magnum Project [2].
主要的差異在於容器開啟的位置是實體機(physical machine)還是虛擬機.
其中, Nova Docker driver將docker視作一種新型態的hypervisor,
因此, 所開啟的容器, 也就可以視為一種虛擬機,
可以調用Nova對於虛擬機的調度管理以及網路的隔離,
當然, 也可以用像是heat的管理機制, 我們可以看到架構圖如下:
圖片來自[1, 3, 5]
直接把容器當作虛擬機, 直接的好處是能夠套用到原本的OpenStack架構,
然而, 卻也犧牲了一些docker的特殊功能,
例如, 像是之前提到的AUFS的image檔的關聯性與階層機制,
為了符合OpenStack中Glance對於映象檔的規範, 而必須捨去.
考慮到Nova docker-driver對於許多docker功能不支援,
Heat docker-driver直接和docker API溝通, 不透過Nova或是其他專案,
架構如下:
圖片來自[4, 5]
在架構圖中, 我們可以看到Nova和docker是獨立的元件,
使用Heat docker-driver的好處, 是支援docker的完整API,
缺點則因為事實上只使用了OpenStack中的Heat管理,
因此, 網路部分仍是走docker的方案, 隔離性較差.
考慮到雲端大規模的使用環境, 使用者還必須自行指定開啟docker的資訊,
(因為沒有Nova Agent的階層化架構)
[1] https://wiki.openstack.org/wiki/Docker
[2] https://wiki.openstack.org/wiki/Magnum
[3] https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-1/
[4] https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-2/
[5] http://dockone.io/article/445
[6] http://www.csdn.net/article/2015-11-07/2826146
[7] http://www.techrepublic.com/article/openstack-is-overkill-for-docker/
[8] https://docs.docker.com/machine/drivers/openstack/
留言
張貼留言