1.linux cgroups 的全稱是 linux control group,是限制乙個程序組能夠使用的資源上限,包括 cpu、記憶體、磁碟、網路頻寬等。
2.對程序進行優先順序設定、審計,以及將程序掛起和恢復等操作。
3.linux cgroups 給使用者暴露出來的操作介面是檔案系統,它以檔案和目錄的方式組織在作業系統的 /sys/fs/cgroup 路徑下。
4.子系統:在 /sys/fs/cgroup 下面有很多諸如 cpuset、cpu、 memory 這樣的子目錄,也叫子系統。
5.在每個子系統下面,為每個容器建立乙個控制組(建立乙個新目錄),控制組下面的資源檔案裡填上什麼值,就靠使用者執行 docker run 時的引數指定。
docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu /bin/bash
cpu_period 和 cpu_quota 這兩個引數需要組合使用,用來限制程序在
長度為 cpu_period 的一段時間內,只能被分配到總量為 cpu_quota 的
cpu 時間,以上設定表示20%的cpu時間
容器可用記憶體包括物理記憶體和swap交換分割槽兩個部分
–memory設定記憶體使用限額
–memory-swap設定swap交換分割槽限額
1.利用lxcfs增強docker容器隔離性和資源可見性
2.設定特權級執行的容器 --privileged=true
docker run -it --name vm1 ubuntu bash
許可權不夠,無法對網絡卡進行設定
3.設定白名單
–privileged=true 的許可權非常大,接近於宿主機的許可權,為了防止
使用者的濫用,需要增加限制,只提供給容器必須的許可權。此時
docker 提供了許可權白名單的機制,使用–cap-add新增必要的許可權
docker run -it --cap-add=net_admin --name vm1 ubuntu bash
比如這裡可以設定新增設定網絡卡的許可權。
保證容器的安全
docker安全遺留問題
1.主要的核心子系統都沒有命名空間,如:
2裝置沒有命名空間
Docker資源限制
m or memory 限制記憶體大小 例 memory 4m memory swap 限制交換分割槽,必須先設定記憶體大小,可設定的值 正數,0,1 正數 swap為swap memory 0 swap為物理機mem 2 1 不限制 注意 在容器內free看到的swap不具有展現出空間指示的意義 ...
docker資源限制
安裝docker後,可以在 sys fs cgroup docker 目錄下看到對docker組應用的各種限制項,包括全域性限制和位於子目錄中對於某個容器的單獨限制。使用者可以通過修改這些檔案值來控制組,從而限制docker應用資源。同時,也可以在建立或啟動容器時為每個容器指定資源的限制 c,cpu...
docker資源限制
docker run m 200m memory swap 300m progrium stress vm 1 vm bytes 290m vm 1 啟動乙個記憶體工作執行緒 vm bytes 280m 每個執行緒分配280記憶體 因為280m在可分配的範圍 300m 內,所以可以正常工作 一直迴圈...