小編的話
“技術干貨”系列文章意在分享技術牛人的知識干貨,每期主題都不一樣喲!期待各位讀者在文后發表留言,來一場技術上的交流和思想上的碰撞!本期將由品高軟件工程師陳洪杰帶來“品高云對Docker的支持”的分享。
分享嘉賓
陳洪杰,目前就任品高廣州云架構產品部--BingoCloud平臺的軟件開發工程師,擁有Docker,LXC等多個容器平臺的項目經驗,15年開始轉向彈性容器服務(ECS)的研究,主要負責彈性容器服務的規劃、設計和開發。
分享正文
很多人可能都聽說過Docker,但卻不知道Docker是到底什么。
Docker其實主要是定位在以應用為中心的PaaS平臺,或者說,是以微服務為架構的平臺。
那什么是微服務架構呢?
簡單來說,就是把一個有著各種功能的應用,根據不同的功能,拆分成多個不同的獨立應用,來達到降低耦合的目的。例如,把認證功能,用戶界面,后臺數據等三大功能獨立分成三個單獨的應用,彼此之間通過各自的API進行遠程調用。而在以前,則是把這三大功能都集成在同一個大應用里面。
接下來我們了解一下傳統VM和Docker容器的區別
如上圖所示,傳統VM,需要在宿主機OS的基礎上,運行Hypervisor來模擬一套硬件,再通過運行各自的GuestOS,來達到隔離和資源調度的目的。而Docker僅僅需要運行一個輕量級的Docker Engine即可。經過測試,傳統VM比起Docker有著5%-20%的性能差距。但比Docker容器有著更好的隔離性、資源限制和安全性。
上圖為傳統VM和Docker容器的對比
接下來我們繼續來看Docker容器和LXC容器的對比。一般來說,Docker容器比LXC容器多了AUFS文件系統。
如上圖所示,因為Docker容器默認使用的就是AUFS文件系統,這個系統可以通過在最底下的那一層構建基礎鏡像,然后在這個基礎層的上面安裝各種庫,最后再在上面安裝各種應用的方式,來構建各種不同的鏡像。鏡像的每一層都是只讀的。每次運行一個實例,就在這個只讀鏡像的基礎上,創建一個可讀寫的層,來存放實例的數據。
同時,不同實例之間,可以共享同一個鏡像,他們之間的區別僅僅是最上面的那一層可讀寫層。同時,Docker還可以把實例的可讀寫層連同只讀鏡像一起,創建一個新的鏡像。這個鏡像只有最頂上的一層是新的數據,其它層仍然與舊鏡像共用,達到節省存儲空間的目的。這功能類似于git的版本管理。
另外,Docker還支持使用Dockerfile,一個類似自動化腳本的文件,來自動構建Docker鏡像。官方提供一個Docker Hub(遠程倉庫),支持用戶上傳自己的鏡像到這個倉庫上,與全世界的人一起分享。
Docker容器,一般是單機部署。但也有很多工具可以用來部署集群供用戶使用。如上圖所示,有 Docker官方的Swarm,google的Kubernetes,第三方的CoreOS,Apache的Mesos+Marathon。這些工具都大大方便了Docker集群的部署。
接下來我們了解一下Docker實踐中的問題以及解決辦法。
1. 首先是Docker 運行在物理機上還是虛擬機上?
一般來說,如果需要高性能,例如HPC,則應該選擇容器虛擬化,并運行在物理機上,降低資源損耗。如果是需要部署一系列的服務,而這些服務的部署又非常復雜,則選擇CaaS,并運行在虛擬機上。
2. 是直接使用Docker,還是使用支持Docker的云平臺?
支持Docker的云平臺,可以在創建時對實例進行調度,也可以在運行時進行調度,更大限度且合理地利用系統資源。同時不但支持Docker容器,還支持CaaS服務。而且還能進行自動的容災遷移和彈性伸縮。同時,云平臺還能提供強大的鏡像管理、網絡管理、存儲管理等功能,這些都大大方便了用戶的使用。所以,建議還是使用支持Docker的云平臺。
3. Docker鏡像該如何管理?
因為Docker官方提供的鏡像倉庫是在國外,國內沒有節點,導致國內訪問的速度比較慢。同時因為國外的網站容易被墻,導致無法訪問。所以一般來說,特別是對穩定性有很高要求的企業用戶來說,還是建議使用私有的鏡像倉庫。品高云內置私有的Docker鏡像倉庫,解決企業內部使用Docker 鏡像的問題。同時,品高云還支持鏡像統一管理,實例備份還原,實例存為鏡像等鏡像功能。
4. Docker網絡該如何管理?
Docker基于namespace隔離,默認只支持Bridge,Host,None這三種模式。這對于企業應用來說,是完全不夠的。品高云讓Docker支持云平臺VPC網絡架構,網絡靈活多樣,更符合企業的習慣。同時還可以支持QOS限速和多租戶隔離。而且,品高云還可以支持SDN。當容器數量達到萬級別的時候,只有SDN才能很好地支持如此多的容器,網絡才不會是瓶頸。
5. Docker網絡安全性如何?
Docker并未提供任何網絡安全性解決方案。
品高云提供的Docker實例具備以下網絡安全性:
A.可應用安全組功能;
B.可應用子網ACL規則;
C.多租戶VLAN隔離。
6. Docker對存儲的支持如何?
Docker對存儲的支持比較有限,僅支持創建時節點文件系統目錄映射。這對企業來說,是遠遠不夠的。品高云則提供存儲卷功能,品高云啟動的Docker實例,可以動態添加/卸載存儲卷,同時也實時備份存儲卷。
最后我們再簡單說一下Docker的應用場景。一般有如下三個:
A.高性能要求 ,例如HPC;
B.GPU 、機器學習 、人工智能;
C.應用管理、部署、測試、持續集成。
關于這三個應用場景的具體內容,我們將后續進行詳細的講解、分享。
歡迎大家和我們一起交流!
想提出問題的同學們,可以在右下方“寫留言”,分享嘉賓會熱情并且耐心地進行解答噢!
你想和更多志同道合的技術大咖一起交流嗎?!你想收聽每周的“品高微信群公開課”的直播嗎?!加入我們“漫步云端 微信群”吧!
掃描下面二維碼添加“品高云珍珠妹”為好友,輸入“我要入群!”的暗號,即可得到入群指引噢~