1. 程式人生 > >centos7下安裝docker(10容器底層--cgroup和namespace)

centos7下安裝docker(10容器底層--cgroup和namespace)

sys bsp 內存 更改 ont sha 進入 logs 一個

cgroup和namespace是實現容器底層的重要技術

cgroup:實現資源限制

namespace:實現資源隔離

1.cgroup:control group

Linux操作系統通過cgroup可以設置進程使用CPU,內存和IO資源使用的限額。我們之前學習的通過-m,--memory-swap,-c,--blkio-weight就是通過cgroup實現的。那麽cgroup到底是什麽樣子的呢?

可以在/sys/fs/cgroup裏面找到,例如:

我們運行一個容器,我們設置的cpu的權重是700

技術分享

我們進入/sys/fs/cgroup/cpu/docker目錄下的相應的容器的ID的目錄裏面,看cpu.shares,可以看到我們設置的權重是700

技術分享

同樣的我們進入/sys/fs/cgroup/memory/docker/中大概是memory.limit_in_bytes這個文件是容器內存的大小

同樣的我們進入/sys/fs/cgroup/blkio/docker/中,blkio.weight這個文件是Block IO的權重文件

我們可以在以上的文件中,查看或者更改容器資源的大小

2.namespace

我們運行的每一個容器,都像是一個新的操作系統一樣,都有文件系統,網卡等資源;那網卡來說,每個容器都會認為自己有一塊獨立的網卡,即使Host主機實際只有一塊網卡資源,這樣的方式使容器更像是一個獨立的計算機。

namespace管著Host中全局唯一的資源,

並讓每個容器都覺得只有自己在使用它,namespace實現了容器間的資源隔離

Linux使用了6種namespace:Mount,UTS,IPC,PID,Network

centos7下安裝docker(10容器底層--cgroup和namespace)