Docker 有提供 docker stats
指令讓使用者可以查看目前 Docker Container 所使用的 CPU、記憶體、網路I/O、BLOCK I/O …等等的資源使用量,讓使用者可以知道每個 Container 使用掉多少的系統資源。
使用以下的指令啟動了 2 個 Container 之後,使用 docker stats
指令查看目前的 Docker Container 資源使用量:
1.啟動 container1 指令如下
$ docker run --name nginx1 -d nginx
2.啟動 container2 指令如下
$ docker run --name nginx2 -d nginx
3.查看 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,二個部份:
1.啟動 docker container 指令如下
$ docker run --name cputest1 -it centos /bin/bash
2.進入 container 之後撰寫 sehll script 以及執行,如下
while.sh
程式碼如下
#!/bin/bash
x=1
while [ $x -le 1000000 ]
do
x=$(( $x + 1 ))
done
執行指令如下
$ time bash while.sh
time 指令用來查看執行的時間
3.執行結果畫面如下
1.啟動 docker container 指令如下
$ docker run --cpu-period=1000000 --cpu-quota=500000 --name cputest2 -it centos /bin/bash
這邊把 CPU 的執行速度調慢一點
2.進入 container 之後撰寫 sehll script 以及執行,如下
while.sh
程式碼如下
#!/bin/bash
x=1
while [ $x -le 1000000 ]
do
x=$(( $x + 1 ))
done
執行指令如下
time bash while.sh
time 指令用來查看執行的時間
3.執行結果畫面如下
以上的測試沒有設定 CPU 資源限制只要11秒就執行完成,如果有設定 CPU 資源限制需要花費 22 秒的時間才能執行完成,以上的實驗主要的目的是要觀察沒有設定 CPU 資源限制以及有設定 CPU 資源限制的是否會影響到程式執行的效能。
今天介紹的執行 Docker Container 資源限制,主要的目的是在執行使用 Docker Container 的時侯也需要注意到資源的分配和使用,避免因為資源不夠而發生一些無法預期的問題。