Docker容器實現原理
??? Docker容器在實現上是通過namespace技術來進行進程隔離,通過cgroup技術實現容器進程可用資源的限制,當docker啟動一個容器時,實際是創建了多了namespace參數的進程。
?
Namespace
?
Namespace:命名空間
????作用:資源隔離
????原理:namespace將內核的全局資源進行封裝,使得每個namespace都有一份獨立的資源,因此不同進程在各自namespace內對同一種資源使用不會相互干擾
?
?
Cgroups
Cgroups:Linux Control Group
????作用:限制一個進程對系統資源的使用上限,包括CPU,內存,Block,I/O等
??????????? Cgroups還能設置進程優先級,對進程進行掛起和恢復操作。
原理:將一組進程放在一個Cgroup中,通過給這個Cgroup分配指定的可用資源,達到控制這一組進程可用的目的,
????實現:再Linux中,Cgroup以文件和目錄的方式組織在操作系統的/sys/fs/cgroup路徑下,該路徑中所有的資源種類均可被cgroup限制。
CPU資源限制
?
內存資源限制
?
容器可以使用的內存資源包括內存這swap資源
BlockIO限制
?