docker零基礎第三篇: 容器底層實現技術

容器底層實現技術: cgroup  , namespace ,  unionfsdocker

 

1.cgroup 實現了資源的限額:CPU,內存,硬盤
2.namespace 實現了資源隔離
3.unionfs 聯合文件系統spa

cgroup實例:進程

 # docker run -d -m 100M httpd      -----------實現了對內存的限額內存

namespace:資源

Linux 使用了六種 namespace,分別對應六種資源:Mount、UTS、IPC、PID、Network 和 User路由

  1. Mount namespace :  Mount namespace 讓容器看上去擁有整個文件系統
  2. UTS namespace : UTS namespace 讓容器有本身的 hostname。 默認狀況下,容器的 hostname 是它的短ID,能夠經過 -h 或 --hostname 參數設置。
  3. IPC namespace : 讓容器擁有本身的共享內存和信號量(semaphore)來實現進程間通訊,而不會與 host 和其餘容器的 IPC 混在一塊兒
  4. PID namespace : 容器在 host 中以進程的形式運行。容器內進程的 PID 不一樣於 host 中對應進程的 PID,容器中 PID=1 的進程固然也不是 host 的systemd進程。也就是說:容器擁有本身獨立的一套 PID,這就是 PID namespace 提供的功能。
  5. Network namespace : 讓容器擁有本身獨立的網卡、IP、路由等資源。io

  6. User namespace : 讓容器可以管理本身的用戶,host 不能看到容器中建立的用戶。
相關文章
相關標籤/搜索