最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker資源管理方式

 更新時(shí)間:2024年07月04日 14:57:32   作者:為什么老是名字被占用  
這篇文章主要介紹了Docker資源管理方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、docker資源控制

Docker通過Cgroup 來控制容器使用的資源配額,包括CPU、內(nèi)存、磁盤三大方面,基本覆蓋了常見的資源配額和使用量控制。

Caroup 是ControlGroups的縮寫,是Linux 內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物理資源(如 cpu、內(nèi)存、磁盤,io等等)的機(jī)制,被LXC、docker等很多項(xiàng)目用于實(shí)現(xiàn)進(jìn)程資源控制。

Cgroup本身是提供將進(jìn)程進(jìn)行分組化管理的功能和接口的基礎(chǔ)結(jié)構(gòu),I/O或內(nèi)存的分配控制等具體的資源管理是通過該功能來實(shí)現(xiàn)的。

  • 資源限制:可以對任務(wù)使用的資源總額進(jìn)行限制。
  • 優(yōu)先級分配:通過分配的cpu時(shí)間片數(shù)量以及磁盤IO帶寬大小,實(shí)際上相當(dāng)于控制了任務(wù)運(yùn)行優(yōu)先級。
  • 資源統(tǒng)計(jì):可以統(tǒng)計(jì)系統(tǒng)的資源使用量,如cpu時(shí)長,內(nèi)存用量等。
  • 任務(wù)控制: cgroup可以對任務(wù) 執(zhí)行掛起、恢復(fù)等操作。

二、docker占用宿主機(jī)cpu的限制

2.1 cpu的使用率上限

Linux通過CFS (Completely Fair Scheduler,完全公平調(diào)度器)來調(diào)度各個(gè)進(jìn)程對ceu的使用。CFS默認(rèn)的調(diào)度周期是100ms 。我們可以設(shè)置每個(gè)容器進(jìn)程的調(diào)度周期,以及在這個(gè)周期內(nèi)各個(gè)容器最多能使用多少CPU時(shí)間。

使用--cpu-period 即可設(shè)置調(diào)度周期,使用--cpu-quota即可設(shè)置在每個(gè)周期內(nèi)容器能使用的CPU時(shí)間。兩者可以配合使用。CFS周期的有效范圍是 1ms~1s,對應(yīng)的--cpu-period 的數(shù)值范圍是1000~1000000。而容器的CPU配額必須不小于1ms,即--cpu-quota的值必須>= 1000。而容器的CPU配額必須不小于1ms,即--cpu-quota的值必須>= 1000。

docker run -itd --name test5 centos:7 /bin/bash

docker ps -a

cd/sys/fs/cgroup/cpu/docker/9d415515c01e61a335bdc841e19b60a1ce54dd3cbaefeab7844fdcf785cd5aa4/

cd /sys/fs/cgroup/cpu/docker/
-1
cat cpu.cfs_period_us 
100000

#cpu.cfs_period_us:cpu分配的周期(微秒,所以文件名中用 us 表示),默認(rèn)為100000。
#cpu.cfs_quota_us:表示該cgroups限制占用的時(shí)間(微秒),默認(rèn)為-1,表示不限制。 如果設(shè)為50000,表示占用50000/100000=50%的CPU。

進(jìn)行CPU壓力測試

docker exec -it test5 bash
vi /cpu.sh
#!/bin/bash
i=0
while true
do
let i++
done
 
chmod +x /cpu.sh
./cpu.sh
 
top					#可以看到這個(gè)腳本占了很多的cpu資源

設(shè)置50%的比例分配CPU使用時(shí)間上限

docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash	#可以重新創(chuàng)建一個(gè)容器并設(shè)置限額
或者
cd/sys/fs/cgroup/cpu/docker/9d415515c01e61a335bdc841e19b60a1ce54dd3cbaefeab7844fdcf785cd5aa4/
echo 50000 > cpu.cfs_quota_us
docker exec -it 3ed82355f811 /bin/bash
./cpu.sh

top					#可以看到cpu占用率接近50%,cgroups對cpu的控制起了效果

#在多核情況下,如果允許容器進(jìn)程完全占用兩個(gè) CPU, 則可以將 cpu-period 設(shè)置為 100000( 即 0.1 秒), cpu-quota設(shè)置為 200000(0.2 秒)。

2.2 設(shè)置CPU資源占用比(設(shè)置多個(gè)容器時(shí)才有效)

注意:該方式需要設(shè)置多個(gè)容器時(shí)才會(huì)生效

創(chuàng)建容器時(shí)可以使用選項(xiàng) --cpu-shares 數(shù)值(該數(shù)值要為1024的倍數(shù),1024代表一份,當(dāng)個(gè)容器占用cpu的份額由自身分配的份數(shù)除于所有容器占用cpu的份數(shù),就為該容器所占用cpu資源的百分比)

[root@localhost ~]#docker run -id --name b1 --cpu-shares 2048 centos:7
[root@localhost ~]#docker run -id --name b2 --cpu-shares 1024 centos:7
[root@localhost ~]#docker run -id --name b3 --cpu-shares 1024 centos:7

創(chuàng)建三個(gè)容器為 b1 和 b2 和 b3,設(shè)置容器的權(quán)重,使得b1和b2和b3的CPU資源占比為1/2和1/4和1/4。

開啟三個(gè)終端,啟動(dòng)容器壓測:

#三個(gè)容器均為以下壓測操作
#下載壓測工具依賴環(huán)境
yum install -y epel-release
#下載壓測工具
yum install -y stress
#進(jìn)行四個(gè)線程壓測
stress -c 2
 
 
#再開啟一個(gè)終端查看測試結(jié)果
docker stats

查看容器運(yùn)行狀態(tài)(動(dòng)態(tài)更新)

由測試結(jié)果, 可以看到在cPU進(jìn)行時(shí)間片分配的時(shí)候,容器b1比容器b2和b3多一倍的機(jī)會(huì)獲得cpu的時(shí)間片。但分配的結(jié)果取決于當(dāng)時(shí)主機(jī)和其他容器的運(yùn)行狀態(tài),實(shí)際上也無法保證容器 b2和b3一定能獲得cpu時(shí)間片

比如容器b2和b3的進(jìn)程一直是空閑的,那么容器b1是可以獲取比容器b2和b3更多的cpu時(shí)間片的。極端情況下,例如主機(jī)上只運(yùn)行了一個(gè)容器,即使它的cpu份額只有50,它也可以獨(dú)占整個(gè)主機(jī)的cpu資源。

Cgroups 只在容器分配的資源緊缺時(shí),即在需要對容器使用的資源進(jìn)行限制時(shí),才會(huì)生效。因此,無法單純根據(jù)某個(gè)容器的cpu 份額來確定有多少cpu資源分配給它,資源分配結(jié)果取決于同時(shí)運(yùn)行的其他容器的CPU分配和容器中進(jìn)程運(yùn)行情況。

2.3 設(shè)置容器綁定指定的cpu

查看主機(jī)中的cpu編號

top   
按數(shù)字“1”

進(jìn)行綁核創(chuàng)建容器

[root@localhost ~]#docker run -id --name b4 --cpuset-cpus 1 centos:7

壓力測試:

yum install -y epel-release
yum install -y stress
 
stress -c 1

三、內(nèi)存使用的限制

3.1 限制容器可以使用的最大內(nèi)存

m (或--memory=)選項(xiàng)用于限制容器可以使用的最大內(nèi)存

docker run -itd --name d1 -m 512m centos:7 /bin/bash
docker  stats

3.2 限制容器可用的swap 大小

#限制可用的swap 大小,--memory-swap

  • 強(qiáng)調(diào)一下, --memory-swap是必須要與 --memory(或-m)一起使用的。
  • 正常情況下, --memory-swap 的值包含容器可用內(nèi)存和可用swap 。
  • 所以 -m 300m --memory-swap=1g 的含義為:容器可以使用300M 的物理內(nèi)存,并且可以使用700M (1G - 300M)的swap。 ? 設(shè)置為0或者不設(shè)置,則容器可以使用的 swap 大小為 -m 值的兩倍。 如果 --memory-swap 的值和 -m 值相同,則容器不能使用swap。 如果 --memory-swap 值為 -1,它表示容器程序使用的內(nèi)存受限,而可以使用的swap空間使用不受限制(宿主機(jī)有多少swap 容器就可以使用多少)。
 #--memory-swap 的值包含容器可用內(nèi)存和可用swap,減去-m的值才是可用swap的值。
 #表示容器可以使用512M的物理內(nèi)存,并且可以使用512M的swap。因?yàn)?g減去512m的物理內(nèi)存,剩余值才是可用swap。
 docker run -itd --name d2 -m 512m --memory-swap=1g centos:7 bash
 ?
 ?
 #--memoryswap值和 -m 的值相同,表示容器無法使用swap
 docker run -itd --name d3 -m 512m --memory-swap=512m centos:7 bash
 ?
 ?
 # --memory-swap 的值設(shè)置為0或者不設(shè)置,則容器可以使用的 swap 大小為 -m 值的兩倍。
 docker run -itd --name d4 -m 512m centos:7 bash
 ?
 ?
 # --memory-swap 值為 -1,它表示容器程序使用的內(nèi)存受限,但可以使用的swap空間使用不受限制(宿主機(jī)有多少swap 容器就可以使用多少)。
 docker run -itd --name d5 -m 512m --memory-swap=-1 centos:7 bash

四、對磁盤IO的配置控制(blkio)的限制

  • -device-read-bps:限制某個(gè)設(shè)備上的讀速度bps ( 數(shù)據(jù)量),單位可以是kb、mb (M)或者gb。
  • --device-write-bps : 限制某個(gè)設(shè)備上的寫速度bps ( 數(shù)據(jù)量),單位可以是kb、mb (M)或者gb。

該速度是指每秒鐘進(jìn)行讀寫操作1M,1G或者是1kb

  • --device-read-iops :限制讀某個(gè)設(shè)備的iops (次數(shù))
  • --device-write-iops :限制寫入某個(gè)設(shè)備的iops ( 次數(shù))

4.1 默認(rèn)情況下容器的寫速度

[root@localhost ~]#docker run -id --name e1  centos:7
[root@localhost ~]#docker exec -it e1 bash
[root@8657384cb483 /]# dd if=dev/zero of=/mnt/test.txt bs=10M count=10 oflag=direct
## oflag=direct 規(guī)避文件讀寫系統(tǒng)中所帶來的緩存,避免影響測試結(jié)果

4.2 進(jìn)行寫速度限制的容器創(chuàng)建

docker run -it --name test10 --device-write-bps /dev/sda:1mb centos:7 /bin/bash
dd if=dev/zero of=/mnt/test.txt bs=10M count=10 oflag=direct

五、清除docker占用的磁盤空間

docker system prune -a 可用于清理磁盤,刪除關(guān)閉的容器、無用的數(shù)據(jù)卷和網(wǎng)絡(luò)。

docker system prune -a 

總結(jié)

對cpu的限制參數(shù)

設(shè)置單個(gè)容器進(jìn)程能夠使用的CPU使用率上限
針對新建的容器:
docker run --cpu-period 單個(gè)CPU調(diào)度周期時(shí)間(1000~1000000)  --cpu-quota 容器進(jìn)程能夠使用的最大CPU時(shí)間(>=1000)

針對已存在的容器:
修改 /sys/fs/cgroup/cpu/docker/容器ID/ 目錄下的 cpu.cfs_period_us(單個(gè)CPU調(diào)度周期時(shí)間)  cpu.cfs_quota_us(容器進(jìn)程能夠使用的最大CPU時(shí)間)  文件的值


設(shè)置多個(gè)容器的CPU占用份額(只能在多個(gè)容器同時(shí)運(yùn)行且CPU資源緊張時(shí)生效)
docker run --cpu-shares 容器進(jìn)程最大占用CPU的份額(值為1024的倍數(shù))

設(shè)置容器綁定指定的CPU
docker run --cpuset-cpus CPUID1[,CPUID2,....]

對內(nèi)存的限制

設(shè)置容器能夠使用的內(nèi)存和swap的值
docker run -m 內(nèi)存值  --memory-swap 內(nèi)存和swap的總值
                                    設(shè)置 0 或 不設(shè)置,表示swap為內(nèi)存的2倍
									設(shè)置 -1,表示不限制swap的值,宿主機(jī)有多少容器即可使用多少
									設(shè)置 與 -m 一樣的值,表示不使用swap

對磁盤IO的限制

docker run --device-read-bps    磁盤設(shè)備文件路徑:速率                  #限制容器在某個(gè)磁盤上讀的速度
           --device-write-bps   磁盤設(shè)備文件路徑:速率                  #限制容器在某個(gè)磁盤上寫的速度
		   --device-read-iops   磁盤設(shè)備文件路徑:次數(shù)                  #限制容器在某個(gè)磁盤上讀的次數(shù)
           --device-write-iops  磁盤設(shè)備文件路徑:次數(shù)                  #限制容器在某個(gè)磁盤上寫的速度

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式

    docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式

    這篇文章主要介紹了docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 3分鐘帶你學(xué)會(huì)docker搭建帕魯服務(wù)器

    3分鐘帶你學(xué)會(huì)docker搭建帕魯服務(wù)器

    幻獸帕魯已經(jīng)正式開服,目前在線人數(shù)已經(jīng)超過7W+,很多玩家想自己創(chuàng)建服務(wù)器和朋友一起聯(lián)機(jī)游玩,本文主要介紹了3分鐘帶你學(xué)會(huì)docker搭建帕魯服務(wù)器,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • k8s部署docker容器的實(shí)現(xiàn)

    k8s部署docker容器的實(shí)現(xiàn)

    這篇文章主要介紹了k8s部署docker容器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 解決docker images 鏡像消失的問題

    解決docker images 鏡像消失的問題

    這篇文章主要介紹了解決docker images 鏡像消失的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker創(chuàng)建本地鏡像實(shí)現(xiàn)方法解析

    Docker創(chuàng)建本地鏡像實(shí)現(xiàn)方法解析

    這篇文章主要介紹了Docker創(chuàng)建本地鏡像實(shí)現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Docker部署Mysql,.Net6,Sqlserver等容器

    Docker部署Mysql,.Net6,Sqlserver等容器

    這篇文章介紹了Docker部署Mysql,.Net6,Sqlserver等容器的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • docker鏡像完全卸載的操作步驟

    docker鏡像完全卸載的操作步驟

    這篇文章主要介紹了docker鏡像完全卸載的操作步驟,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker中容器日志查看與監(jiān)控的5個(gè)必備排錯(cuò)命令

    Docker中容器日志查看與監(jiān)控的5個(gè)必備排錯(cuò)命令

    Docker 提供了強(qiáng)大的監(jiān)控與日志工具,只要掌握幾個(gè)關(guān)鍵命令,你就能像偵探一樣,快速找到問題根源,本文為大家整理了5 個(gè)必備排錯(cuò)命令,希望對大家有所幫助
    2025-11-11
  • 如何使用 Gunicorn + Nginx + Docker 將 Django 項(xiàng)目部署到云服務(wù)器

    如何使用 Gunicorn + Nginx + Docker 

    本篇文章介紹了使用Gunicorn+Nginx+ocker器ginx三件套部署Dginx+Nginx+N開發(fā)服務(wù)器的全過程,本文結(jié)合實(shí)例給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-05-05
  • Docker常用命令詳解

    Docker常用命令詳解

    這篇文章主要介紹了Docker常用命令詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評論

泾川县| 宁远县| 四会市| 报价| 凤城市| 汾西县| 江阴市| 义乌市| 丹阳市| 将乐县| 韩城市| 浦北县| 扎鲁特旗| 策勒县| 田林县| 菏泽市| 正镶白旗| 梅河口市| 达尔| 南平市| 年辖:市辖区| 冀州市| 西充县| 叶城县| 大同县| 阳江市| 陇川县| 航空| 沁水县| 平湖市| 福鼎市| 万载县| 枝江市| 新建县| 永定县| 梅河口市| 平果县| 郓城县| 农安县| 镶黄旗| 当雄县|