cgroups就是controller group,在這個group中,有分配好的特定比例的cpu時間,io時間,可用記憶體大小等。cgroups是講任意程序進行分組化管理的linux核心功能。cgroups中的重要概念是「子系統」,也就是資源控制器,每種子系統就是乙個資源的分配器,比如cpu子系統是控制cpu時間分配的。首先掛載子系統,然後才有control group。比如先掛載memory子系統,然後再memory子系統中建立乙個cgroup節點,在這個節點中,將需要控制的程序id寫入,並且將控制的屬性寫入,這就完成了記憶體的資源限制。
cgroups被linux核心支援,有效能優勢,可以限制幾乎所有伺服器上的資源:cpu,mem,iops,net,device等
lxc是linux containers的簡稱,是一種基於容器的作業系統層級的虛擬化技術。借助於namespace的隔離機制和cgroup限額功能,lxc提供了一套同意的api和工具來建立和管理container。lxc跟其他作業系統層次的虛擬化技術相比,最大的優勢在於lxc被整合僅核心,不用單獨為核心打補丁lxc 旨在提供乙個共享kernel的os級虛擬化方法,在執行時不用重複載入kernel。如果核心停止,所有的容器就會停止執行。
aufs是乙個能透明覆蓋乙個或多個現有檔案系統的層級檔案系統。支援將不同目錄掛載到同乙個虛擬檔案系統下,可以把不同的目錄聯合在一起,組成乙個單一的目錄。這種是一種虛擬的檔案系統,檔案系統不用格式化,直接掛載即可。docker移植再用aufs作為容器的檔案系統。當乙個程序需要修改乙個檔案時,aufs建立該檔案的乙個副本。aufs可以把多層合併成檔案系統的單層表示。這個過程稱為寫入複製(copy on write)。
使用aufs的另乙個好處是docker的版本容器映象能力。每個新版本都是乙個與之前版本的簡單差異改動,有效地保持映象檔案最小化。
為了最大化重用image,加快雲信高速度,減少記憶體和磁碟的footprint,docker container執行時所構造的執行環境,實際上是由具有依賴關係的多個layer組成的。例如乙個apache的執行環境可能是在整合的bootfs image的基礎上,疊加了包含例如emacs等各種工具的image,再疊加包含apache及其相關依賴library的image,這些image由aufs檔案系統載入合併到統一路徑中,以唯讀的方式存在,最後再疊加載入一層可寫的空白的layer用作記錄對當前執行環境所在的修改。
1、docker container是image的例項,共享核心,有點像水果和蘋果的關係,水果是乙個類,蘋果就是水果的乙個例項
2、docker container裡可以執行不同os的image,比如ubuntu或者centos
3、docker container不建議內部開啟乙個sshd服務,1.3版本後新增了docker exec命令進入容器排查問題
4、docker container沒有ip位址,通常不會有服務端埠暴露,是乙個封閉的「盒子/沙箱」
建立完成後通過start啟動container,有停止,暫停,執行和kill等狀態
1、docker daemon是建立和執行container的linux守護程序,也是docker最主要的核心元件
2、可以理解為docker container的container
3、可以繫結本地埠並提供rest api服務,用來遠端訪問和控制
Docker學習筆記 1 基本概念
一.了解docker docker是乙個開源的引擎,可以輕鬆的為任何應用建立乙個輕量級的 可移植的 自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括vms 虛擬機器 bare metal openstack 集群和其他的基礎應用平台。docker通常用於如下場景 二...
docker入門一 docker基本概念
docker 是個偉大的專案,它徹底釋放了虛擬化的威力,極大降低了雲計算資源 的成本,同時讓應用的分發 測試 部署和分發都變得前所未有的高效和輕鬆,docker有最基本的幾個概念 docker 映象 docker 映象就是乙個唯讀的模板,像可以用來建立 docker 容器。docker 容器 doc...
Docker學習之基本概念
作為乙個後端noder,不了解docker有點說不過去,這節開始,學習一些docker層面的東西。docker最初是dotcloud公司創始人solomon hykes在法國期間發起的乙個公司內部專案,它是基於dotcloud 公司多年雲服務技術的一次革新,並於2013年3月以apache2.0授權...