iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 27
0
DevOps

用30天來介紹和使用 Docker系列 第 27

Day 27:Docker Container 資源限制

  • 分享至 

  • xImage
  •  

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

執行結果畫面如下
https://ithelp.ithome.com.tw/upload/images/20171230/20103456uWVNyzVHHw.png

這個視窗會根據資源的使用狀態動態的調整

Docker 有提供在啟動 container 時限制記憶體的使用量,這裡限制一個 container 只能使用 512 MB 的記憶體,指令如下

$ docker run --memory 512MB --name nginx3 -d nginx

使用 docker stats 指令查看,如下

$ docker stats nginx3

畫面如下
https://ithelp.ithome.com.tw/upload/images/20171230/20103456xvzcnuudnv.png

Docker 還有提供 CPU 的使用資源限制,這邊測試分為沒有設定 CPU 資源限制執行 shell script 以及有設定 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.執行結果畫面如下
https://ithelp.ithome.com.tw/upload/images/20171230/20103456V2QlzKq9jl.png

二、有設定 CPU 資源限制執行shell script

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.執行結果畫面如下
https://ithelp.ithome.com.tw/upload/images/20171230/201034564iBY8tudPy.png

以上的測試沒有設定 CPU 資源限制只要11秒就執行完成,如果有設定 CPU 資源限制需要花費 22 秒的時間才能執行完成,以上的實驗主要的目的是要觀察沒有設定 CPU 資源限制以及有設定 CPU 資源限制的是否會影響到程式執行的效能。

今天介紹的執行 Docker Container 資源限制,主要的目的是在執行使用 Docker Container 的時侯也需要注意到資源的分配和使用,避免因為資源不夠而發生一些無法預期的問題。


上一篇
Day 26:使用 Intellij 來操作 Docker 和撰寫 Dockerfile
下一篇
Day28:在 Docker Container 裡使用 GPU Resource
系列文
用30天來介紹和使用 Docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言