docker--資源控制

docker--資源控制

概述

​ 由於一臺主機放多個容器,默認情況下,docker 沒有對容器鏡像硬件資源做限制,當容器負載過高的時候會佔用宿主機的資源,所以需要對容器的資源設置一個上限,可以從網絡資源,CPU,I/O,內存這些方面來進行限制。

一、網絡資源控制

安裝Docker時,它會自動創建三個網絡,bridge(創建容器默認連接到此網絡),none,host.

host (僅主機模式):容器將不會虛擬自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。

​ 優勢:網絡性能比較好,但是網絡的隔離性不好

Container(容器模式):創建的容器不會創建自己的網卡,配置自己的IP,而是和一個指定的容器共享IP,端口範圍

None:該模式關閉了容器的網絡功能。

Bridge (橋接模式):此模式會爲每一個容器分配,設置IP等,並將容器連接到一個docker 0 虛擬網橋,通過docker 0 網橋以及IPtable nat表配置與宿主機通信。

網絡資源管理命令

【1】查看網絡模式

docker network ls

docker--資源控制

【2】使用橋接模式創建

docker run -itd --name test1 --network bridge --ip 127.17.0.10 centos:7 /bin/bash

//會發現使用bridge無法支持指定IP
// 可以生成鏡像和容器 但是無法開啓容器
// 如果不加 --ip IP地址 是可以生成容器和鏡像的 容器是啓動狀態
//進容器 發現沒有IP地址 可以先裝一個 yum install net-tools -y,在查詢IP地址 就是發現有一個

docker--資源控制

docker--資源控制

docker--資源控制

docker--資源控制

【3】自定義網絡IP

docker network create --subnet=網段/24 名字

docker network create --subnet=172.18.0.0/16 mynetwork
//最後的mynetwork可以按個人喜歡命名

docker--資源控制

給容器test3固定mynetwork的網段IP地址
docker run -itd --name test3 --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash

docker--資源控制

docker--資源控制

二、CPU使用率

cd /sys/fs/cgroup/cpu/docker/ 可以看到所有容器的信息。

docker--資源控制

【1】限定CPU使用超過20%

CPU進程數爲100000,那麼CPU的20%爲20000

cpu-quota:指定cpu的使用上限的百分比

docker run -itd --name test1 --cpu-quota 20000 centos:7 /bin/bash
-i:表示輸入   -t:表示綁定終端
或者
echo 20000 > /sys/fs/cgroup/cpu/docker/容器ID號/cpu.cfs_quota_us

【2】按比例分配CPU

cpu-shares:
cpu資源提供一組容器使用,組內的容器按比例使用cpu資源,cpu資源被負載打的容器佔用(按照壓縮比例分配),當空閒進行運行起來時,cpu資源會被分配到其他容器

創建兩個容器爲c1和c2,若只有這兩個容器,設置容器的權重,使得c1和c2的CPU資源佔比爲33.3%和66.7%

docker run -itd --name c1 --cpu-shares 512 centos:7
docker run -itd --name c2 --cpu-shares 1024 centos:7

驗證:分別進入容器中,安裝兩個軟件

yum install epel-release -y
yum install stress -y
stress -c 4  //產生四個CPU線程

在另外一個終端頁面驗證CPU百分比,可以看看到c2的cpu是c1的兩倍

docker stats 
//可以看到容器的百分比

【3】限制容器使用指定的CPU

cpuset-cpus:指定容器只能運行在那個cpu核心上(綁定cpu);核心使用0,1,2,3編號

docker run -itd --name test2 --cpuset-cpus 1,3 centos:7 /bin/bash

//進容器,安裝軟件
yum install epel-release -y
yum install stress -y
stress -c 4  //產生四個CPU線程

//驗證方法:
//開啓另一個終端輸入:top 按 1 檢查

【4】內存使用限制

docker run -itd --name test3 -m 512m centos:7

驗證:
另一個終端查看容器狀態 docker stats

【5】磁盤I/O讀寫優化

--device-read-bps:限制讀某個設備的bps(數據量) 
列:docker run -d --device-read-bps /dev/sda:30M centos:7

--device-write-bps:限制寫入某個設備的bos(數據量)
列:docker run -d --device-write-bps /dev/sda:30M centos:7

--device-read-iops:限制讀某個設備的iops(次數)

--device-write-iops:限制寫入某個設備的iops(次數)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章