Docker(linux container) 所依賴的底層技術

1 Namespacehtml

用來作PID的隔離,有了namespace,在docker container裏頭看來,就是一個完整的linux的世界。在host看來,container裏的進程,就是一個普通的host進程,namespace提供這種pid的映射和隔離效果,host承載着container,就比如造物者創造一個個世外桃源。linux

2 Cgroupsdocker

在個人另一篇博文裏,有詳細介紹cgroup如何作到內存,cpu和io速率的隔離,移步cgroups安全

3 Chroot網絡

如何在container裏頭,看到的文件系統,就是一個完整的linux系統,有/etc、/lib 等,經過chroot實現ui

4 Vethspa

container裏,執行ifconfig能夠看到eth0的網卡,如何通訊呢?實際上是在host上虛擬了一張網卡出來(veth73f7),跟container裏的網卡作了橋接,全部從container出來的流量都要過host的虛擬網卡,進container的流量也是如此。htm

5 Union FSblog

對於這種疊加的文件系統,有一個很好的實現是AUFS,在Ubuntu比較新的發行版裏都是自帶的,這個能夠作到以文件爲粒度的copy-on-write,爲海量的container的瞬間啓動,提供了技術支持,也會持續部署提供了幫助。不過以文件爲粒度的copy-on-write帶來一個問題,就是修改大文件時候,須要複製整個大文件進行修改,效率堪憂。進程

6 Iptables, netfilter

主要用來作ip數據包的過濾,好比能夠作container之間沒法通訊,container能夠沒法訪問host的網絡,可是能夠經過host的網卡訪問外網等這樣的網絡策略

7 TC

主要用來作流量隔離,帶寬的限制

8 Quota

用來作磁盤讀寫大小的限制,區別於cgroups對blkio的控制,quota是用來限制用戶可用空間的大小

9 Setrlimit

能夠限制container中打開的進程數,限制打開的文件個數等

 

拋磚引玉,但願你們對每一點技術作更加深刻的瞭解與探索。以上是linux container一些基本的技術,docker基本是實現了前五個的技術,用libcontainer作了一層封裝,要實現一個完整的安全的container技術,docker還有一些路須要走,期待docker的完善,你們能夠多多關注這個2014年度最熱的開源技術,docker!

相關文章
相關標籤/搜索