Docker關鍵知識點兒彙總

容器

容器=cgroup+namespace+rootfs+容器引擎(用戶態工具)

  • Cgroup:資源控制。
  • Namespace:訪問隔離。
  • rootfs:文件系統隔離。
  • 容器引擎:生命週期控制。

容器兩個核心技術

NameSpace
Namespace又稱爲命名空間(也可翻譯爲名字空間),它是將內核的全局資源做封裝,使得每個Namespace都有一份獨立的資源,因此不同的進程在各自的Namespace內對同一種資源的使用不會互相干擾。

  • IPC:隔離System V IPC和POSIX消息隊列。
  • Network:隔離網絡資源。
  • Mount:隔離文件系統掛載點。
  • PID:隔離進程ID。
  • UTS:隔離主機名和域名。
  • User:隔離用戶ID和組ID。

Cgroup
Cgroup是control group的簡寫,屬於Linux內核提供的一個特性,用於限制和隔離一組進程對系統資源的使用,也就是做資源QoS,這些資源主要包括CPU、內存、block I/O和網絡帶寬。

  • devices:設備權限控制。
  • cpuset:分配指定的CPU和內存節點。
  • cpu:控制CPU佔用率。
  • cpuacct:統計CPU使用情況。
  • memory:限制內存的使用上限。
  • freezer:凍結(暫停)Cgroup中的進程。
  • net_cls:配合tc(traffic controller)限制網絡帶寬。
  • net_prio:設置進程的網絡流量優先級。
  • huge_tlb:限制HugeTLB的使用。
  • perf_event:允許Perf工具基於Cgroup分組做性能監測。

Docker五種網絡模式

None
不爲容器配置任何網絡功能。

Container
與另一個運行中的容器共享NetworkNamespace,共享相同的網絡視圖。

Host
與主機共享Root Network Namespace,容器有完整的權限可以操縱主機的協議棧、路由表和防火牆等,所以被認爲是不安全的。

Bridge
Docker設計的NAT網絡模型。
Docker網絡的初始化動作包括:創建docker0網橋、爲docker0網橋新建子網及路由、創建相應的iptables規則等。


在橋接模式下,Docker容器與Internet的通信,以及不同容器之間的通信,都是通過iptables規則控制的。
Overlay
Docker原生的跨主機多子網模型。
overlay網絡模型比較複雜,底層需要類似consul或etcd的KV存儲系統進行消息同步,核心是通過Linux網橋與vxlan隧道實現跨主機劃分子網。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章