關於docker的核心技術,就是以下的三大技術:
1.namespaces 【命名空間】
使用linux的命名空間實現的進程間隔離。Docker 容器內部的任意進程都對宿主機器的進程一無所知。
除了進程相關的命名空間,還會設置與用戶、網絡、IPC 以及 UTS 相關的命名空間。
Docker 通過命名空間成功完成了與宿主機進程和網絡的隔離。
雖然docker通過命名空間創建了網絡隔離,但依舊需要與外界連接才能有用。
Docker 為我們提供了四種不同的網絡模式,Host、Container、None 和 Bridge 模式。【四種模式區別】
默認使用bridge模式:在這種模式下,除了分配隔離的網絡命名空間之外,Docker 還會為所有的容器設置 IP 地址。當 Docker 服務器在主機上啟動之后會創建新的虛擬網橋 docker0,隨后在該主機上啟動的全部服務在默認情況下都與該網橋相連。
2.control groups CGGroups【控制組】
Control Groups(簡稱 CGroups)就是能夠隔離宿主機器上的物理資源,例如 CPU、內存、磁盤 I/O 和網絡帶寬。
3.union filesystem【聯合文件系統】
UnionFS 其實是一種為 Linux 操作系統設計的用於把多個文件系統『聯合』到同一個掛載點的文件系統服務。
容器和鏡像的區別就在於,所有的鏡像都是只讀的,而每一個容器其實等於鏡像加上一個可讀寫的層,也就是同一個鏡像可以對應多個容器。
每一個鏡像層或者容器層都是 /var/lib/docker/ 目錄下的一個子文件夾;在 Docker 中,所有鏡像層和容器層的內容都存儲在 /var/lib/docker/aufs/diff/ 目錄中。
AUFS 只是 Docker 使用的存儲驅動的一種,除了 AUFS 之外,Docker 還支持了不同的存儲驅動,包括 aufs、devicemapper、overlay2、zfs 和 vfs 等等,在最新的 Docker 中,overlay2 取代了 aufs 成為了推薦的存儲驅動,但是在沒有 overlay2 驅動的機器上仍然會使用 aufs 作為 Docker 的默認驅動。
詳細參考:http://dockone.io/article/2941