第 3 章:Docker 容器資源限制
Docker 有提供 docker stats
指令讓使用者可以查看目前 Docker Container 所使用的 CPU、記憶體、網路I/O、BLOCK I/O …等等的資源使用量,讓使用者可以知道每個 Container 使用掉多少的系統資源。
使用以下的指令啟動了 2 個 Container 之後,使用 docker stats
指令查看目前的 Docker Container 資源使用量:
啟動 container1 指令
docker run --name nginx1 -d nginx
啟動 container2 指令
docker run --name nginx2 -d nginx
查看 Docker Container 的資源使用狀態
docker stats nginx1 nginx2
這邊的 nginx1 和 nginx2 代表的是 container name 也可以使用 container id
這個視窗會根據資源的使用狀態動態的調整
Docker 有提供在啟動 container 時限制記憶體的使用量,這裡限制一個 container 只能使用 512 MB 的記憶體
docker run --memory 512MB --name nginx3 -d nginx
使用 docker stats
指令查看
docker stats nginx3
Docker 還有提供 CPU 的使用資源限制,這邊測試分為沒有設定 CPU 資源限制執行 shell script 以及有設定 CPU 資源限制執行 shell script,二個部份:
一、 沒有設定 CPU 資源限制執行shell script
啟動 docker container 指令
docker run --name cputest1 -it centos /bin/bash
進入 container 之後撰寫 sehll script 以及執行 while.sh
#!/bin/bash
x=1
while [ $x -le 1000000 ]
do
x=$(( $x + 1 ))
done
time bash while.sh
time 指令用來查看執行的時間
二、有設定 CPU 資源限制執行shell script
啟動 docker container 指令
dockerrun --cpu-period=1000000 --cpu-quota=500000 --namecputest2 -itcentos/bin/bash
這邊把 CPU 的執行速度調慢一點
進入 container 之後撰寫 sehll script 以及執行
while.sh
程式碼如下
#!/bin/bash
x=1
while [ $x -le 1000000 ]
do
x=$(( $x + 1 ))
done
執行指令如下
time bash while.sh
以上的測試沒有設定 CPU 資源限制只要 11 秒就執行完成,如果有設定 CPU 資源限制需要花費 22 秒的時間才能執行完成,以上的實驗主要的目的是要觀察沒有設定 CPU 資源限制以及有設定 CPU 資源限制的是否會影響到程式執行的效能。