docker就是虛擬化的一種輕量級替代技術。docker的容器技術不依賴任何語言、框架或系統,可以將應用變成一種標準化的、可移植的、自管理的元件,並脫離伺服器硬體在系統中開發、除錯和執行,在 linux 系統上迅速建立乙個容器並在容器上部署和執行應用程式,並通過配置檔案可以輕鬆實現應用程式的自動化安裝、部署和公升級,非常方便。因為使用了容器,所以可以很方便的把生產環境和開
發環境分開,互不影響,這是 docker 最普遍的乙個用法。接下來講講docker的幾項核心技術。
cgroups就是controller group ,用於限制某個或者某些程序的分配資源,在這個group中,有分配好的特定比例的cpu時間,io時間,可用記憶體大小等。
cgroups是將任意程序進行分組化管理的linux核心功能。
cgroups中的 重要概念是「子系統」,也就是資源控制器,每種子系統就是乙個資源的分配器,比如cpu子系統是控制cpu時間分配的。首先掛載子系統,然後才有control group的。比如先掛載memory子系統,然後在memory子系統中建立乙個cgroup節點,在這個節點中,將需要控制的程序id寫入,並且將控制的屬性寫入,這就完成了記憶體的資源限制。
cgroups 被linux核心支援,在很多領域可以取代虛擬化技術分割資源。cgroup預設有諸多資源組,可以限制幾乎所有伺服器上的資源。
lxc是linux containers的簡稱,是一種基於容器的作業系統層級的虛擬化技術。借助於namespace的隔離機制和cgroup資源限制功能,lxc提供了一套統一的api和工具來建立和管理container。lxc跟其他作業系統層次的虛擬化技術相比,最大的優勢在於lxc被整合進核心,不用單獨為核心打補丁
lxc 旨在提供乙個共享kernel的 os 級虛擬化方法,在執行時不用重複載入kernel, 且container的kernel與host共享,因此可以大大加快container的啟動過程,並顯著減少記憶體消耗,容器在提供隔離的同時,還通過共享這些資源節省開銷。
aufs是乙個能透明覆蓋一或多個現有檔案系統的層狀檔案系統。 支援將不同目錄掛載到同一
個虛擬檔案系統下,可以把不同的目錄聯合在一起,組成乙個單一的目錄。這種是一種虛擬的檔案系統,檔案系統不用格式化,直接掛載即可。
docker一直在用aufs作為容器的檔案系統。當乙個程序需要修改乙個檔案時,aufs建立該檔案的乙個副本。
aufs可以把多層合併成檔案系統的單層表示。這個過程稱為寫入複製( copy on write )。
aufs允許docker把某些映象作為容器的基礎。例如,你可能有乙個可以作為很多不同容器的基礎的centos系統映象。多虧aufs,只要乙個centos映象的副本就夠了,這樣既節省了儲存和記憶體,也保證更快速的容器部署。
使用aufs的另乙個好處是docker的版本容器映象能力。每個新版本都是乙個與之前版本的簡單差異改動,有效地保持映象檔案最小化。
docker image是乙個極度精簡版的linux程式執行環境,映象包括的東西更少,除非是映象疊加方式的。
docker image是需要定製化build的乙個「安裝包」,包括基礎映象+應用的二進位制部署包。
docker image內不建議有執行時的配置檔案。
dockerfile用來建立乙個自定義的image,包含了使用者指定的軟體依賴等。
docker image盡量重用和使用網上公開的基礎映象。
docker container是image的例項,共享核心。
docker container裡可以執行不同os的image,比如ubuntu的或者centos。
docker container可通過docker exec命令進入容器排查問題。
docker container沒有ip位址,通常不會有服務埠暴露,是乙個封閉的沙箱。
docker daemon是建立和執行container的linux守護程序,也是docker最主要的核心元件。
docker daemon可以繫結本地埠並提供rest api服務,用來遠端訪問和控制。
Docker核心技術
執行在同樣的主機上,docker容器共用乙個container,而虛擬機器則使用自己的作業系統上的container,虛擬機器之間擁有比docker更好的隔離性,但docker相對於虛擬機器來說有更多的優勢,比如虛擬機器作業系統的存在額外占用了更多的計算資源,其次,從空間占用上,虛擬機器基本都是gb...
Docker核心技術
一 docker基礎 一處封裝構建,到處執行 跨平台跨伺服器。1.解決了執行環境和配置問題軟體容器,方便做持續整合並有助於整體發布的容器虛擬化技術。二 docker三要素 1.倉庫 集中存放映象的場所。docker hub 2.映象 乙個唯讀的模板。3.容器 獨立執行的乙個或一組應用,映象的例項。4...
Docker 核心技術
介紹 linux namespace 是一種 linux kernel 提供的資源隔離方案 linux 核心 中 namespace 的實現 linux 對 namespace 操作方法 namespace 的隔離性 namespace 型別 隔離資源 kernel 版本 ipcsystem v i...