docker容器的記憶體資源限制

2021-10-07 08:04:29 字數 2124 閱讀 7203

- docker資源限制和docker資源限制的型別

- 記憶體資源限制的原理和記憶體資源限制的選項

- 配置記憶體資源限制

預設情況docker沒有對容器進行資源限制

容器可以無限制從docker宿主機獲取計算機硬體資源

當docker宿主機硬體佔滿,linux核心探測報記憶體異常或者溢位,自動殺死占用系統資源高的程序

強制將容器占用的資源進行釋放,保證docker宿主機穩定執行

記憶體資源限制

cpu資源限制

計算機儲存資源限制

管理員可以調整容器的優先順序避免資源佔滿強制停止容器

管理員可以配置記憶體溢位禁止關閉那些容器

2)記憶體限制常見的選項

-m:指定執行記憶體大小預設4m,單位可以是k、m、g

–memory-swap:容器使用快取區大小0~100,計算機記憶體使用複雜

–memory-reservation:記憶體使用率的軟限制,必須小於制定執行記憶體大小

–oom-kill-disable:記憶體溢位禁止關閉容器

1)限制執行容器記憶體大小,指定容器記憶體大小為1g

[root@centos01 ~]# docker run  -it --name centos01 -m 1g hub.c.163.com/public/centos:6.7-tools /bin/bash
2)檢視容器資源情況
[root@centos01 ~]# docker stats centos01
3)配置指定記憶體大小,資源溢位禁止終止容器
[root@centos01 ~]# docker run -it -d --name centos02 -m 1g --oom-kill-disable hub.c.163.com/public/centos:6.7-tools
4)檢視最新容器的運**況
[root@centos01 ~]# docker ps -l
5)避免記憶體溢位

對容器進行壓力測試,最大併發量佔記憶體大小

保證docker宿主機有充足的硬體資源,不足及時進行擴充套件

配置容器記憶體使用上線避免無限制獲取宿主機的硬體資源

在容器中不建議是swap分割槽,記憶體足夠大可以不是用swap

計算機空間,用swap分割槽減去指定記憶體大小剩餘實際可用swap空間

1)cpu資源限制的方式

密集型:多個cpu密碼給多個容器使用,多個容器競爭使用cpu資源

i/o密集型:管理員指定特定的容器使用特定的cpu,cpu編號從0開始

2)限制容器使用cpu資源的常見選項

–cpuset-cpus=2:指定容器使用cpu,cpu編號從0開始

–cpus=1:指定容器使用cpu核心數

–cpu-shares:隨機指定cpu,容器空閒自動將cpu資源釋放,docker將資源自動分配到高負載容器中使用,空閒容器啟動從其他容器將資源分配給當前容器使用

3)指定容器執行占用cpu的核心數

[root@centos01 ~]# docker run -it --name centos03 -d --cpus 1 hub.c.163.com/public/centos:6.7-tools
4)配置容器動態使用cpu,最大佔docker宿主機cpu的10%的使用率
[root@centos01 ~]#  docker run -it --name cenos06 -d --cpu-shares 10 hub.c.163.com/public/centos:6.7-tools
5)配置docker容器使用宿主機的第二個cpu核心處理資料
[root@centos01 ~]#  docker run -it --name cenos07 -d --cpuset -cpus=1-1hub.c.163.com/public/centos:6.7-tools

docker容器資源限制

docker啟動時可用針對記憶體和cpu進行資源限制 一 對記憶體進行限制 m 記憶體大小 docker run rm itd name jdk8 m 1024m primetoninc jdk 進行驗證 二 對cpu進行限制 指定容器中的程式執行在指定的cpu核心上 cpuset cpus 0 指...

Docker容器記憶體限制

1.使用docker自帶的 m操作進行記憶體限制時可能會由於核心限制所以出現以下提示 your kernel does not support swap limit capabilities.memory limit without swap必須通過修改grub檔案 etc default grub...

docker容器進行資源限制

限制cpu docker run d name stress1 cpu shares 5 stress ubuntu docker run d name stress2 cpu shares 10 stress ubuntu 這裡的cpu shares為相對cpu資源,虛擬機器一共啟動兩個容器的話,...