Docker 有效能損失嗎?
Docker有效能損失,但是很小,相對Docker的出色的功能,這點的效能損失是可以忽略不計的,Docker是一個開源的應用容器引擎,可以讓開發者打包應用到一個容器中,然後發佈到任何流行的Linux機器上運行。
Docker
#Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的Linux機器或Windows 機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。
一個完整的Docker有以下幾個部分組成:
DockerClient客戶端
Docker Daemon守護程式
Docker Image映像
DockerContainer容器
Docker 原理
##Docker核心解決的問題是利用LXC來實現類似VM的功能,從而利用更節省的硬體資源提供給用戶更多的運算資源。同VM的方式不同, LXC 其並不是一套硬體虛擬化方法- 無法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意一個,而是一個操作系統級虛擬化方法, 理解起來可能並不像VM那樣直覺。所以我們從虛擬化到docker要解決的問題出發,看看他是怎麼滿足使用者虛擬化需求的。
用戶需要考慮虛擬化方法,尤其是硬體虛擬化方法,需要藉助其解決的主要是以下4個問題:
隔離性- 每個用戶實例之間相互隔離, 互不影響。硬體虛擬化方法給的方法是VM, LXC給出的方法是container,更細一點是kernel namespace
可配額/可度量- 每個使用者實例可以按需提供其計算資源,所使用的資源可以被計量。硬體虛擬化方法因為虛擬了CPU, memory可以方便實現, LXC則主要是利用cgroups來控制資源
移動性- 用戶的實例可以很方便地複製、移動和重建。硬體虛擬化方法提供snapshot和image來實現,docker(主要)利用AUFS實現############安全 - 這個話題比較大,這裡強調是host主機的角度盡量保護container。硬體虛擬化的方法因為虛擬化的水平比較高,用戶進程都是在KVM等虛擬機容器中翻譯運行的, 然而對於LXC, 用戶的進程是lxc-start進程的子進程, 只是在Kernel的namespace中隔離的, 因此需要一些kernel的patch來保證用戶的運行環境不會受到來自host主機的惡意入侵, dotcloud(主要是)利用kernel grsec patch解決的.############# ##############推薦教學:《###Docker###》################
以上是Docker 有效能損失嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!