如何使用docker對(duì)容器資源進(jìn)行限制
問題窺探
在服務(wù)器當(dāng)中,假設(shè)iis服務(wù)部署多個(gè)站點(diǎn),那么只要其中一個(gè)站點(diǎn)出問題,假設(shè)是cpu100%,或者是內(nèi)存爆滿,那么這臺(tái)服務(wù)器上的其他站點(diǎn)都會(huì)跟著掛掉。同樣在使用容器時(shí),單臺(tái)主機(jī)上可能會(huì)跑幾十個(gè)容器,容器雖然都相互隔離,但是用的卻是與宿主機(jī)相同的內(nèi)核,CPU、內(nèi)存、磁盤等硬件資源。如果不對(duì)容器資源進(jìn)行限制,容器之間就會(huì)相互影響。
解決辦法
Docker提供了限制內(nèi)存,CPU或磁盤IO的方法, 可以對(duì)容器所占用的硬件資源大小以及多少進(jìn)行限制,我們?cè)谑褂胐ocker create創(chuàng)建一個(gè)容器或者docker run運(yùn)行一個(gè)容器的時(shí)候就可以來對(duì)此容器的硬件資源做限制。
內(nèi)存限制
Docker 提供的內(nèi)存限制功能有以下幾點(diǎn):
1、容器能使用的內(nèi)存和交換分區(qū)大小。
2、容器的核心內(nèi)存大小。
3、容器虛擬內(nèi)存的交換行為。
4、容器內(nèi)存的軟性限制。
5、是否殺死占用過多內(nèi)存的容器。
6、容器被殺死的優(yōu)先級(jí)
-m,--memory 內(nèi)存限制,格式是數(shù)字加單位,單位可以為 b,k,m,g。最小為 4M --memory-swap 內(nèi)存+交換分區(qū)大小總限制。格式同上。必須必-m設(shè)置的大 --memory-reservation 內(nèi)存的軟性限制。格式同上 --oom-kill-disable 是否阻止 OOM killer 殺死容器,默認(rèn)沒設(shè)置 --oom-score-adj 容器被 OOM killer 殺死的優(yōu)先級(jí),范圍是[-1000, 1000],默認(rèn)為 0 --memory-swappiness 用于設(shè)置容器的虛擬內(nèi)存控制行為。值為 0~100 之間的整數(shù) --kernel-memory 核心內(nèi)存限制。格式同上,最小為 4M
用戶內(nèi)存限制就是對(duì)容器能使用的內(nèi)存和交換分區(qū)的大小作出限制。
使用時(shí)要遵循兩條直觀的規(guī)則:
-m,--memory選項(xiàng)的參數(shù)最小為 4M。 --memory-swap不是交換分區(qū),而是內(nèi)存加交換分區(qū)的總大小,所以--memory-swap必須比-m,--memory大。
cpu限制
docker run命令和 CPU 限制相關(guān)的所有選項(xiàng)如下:
--cpuset-cpus="" 允許使用的 CPU 集,值可以為 0-3,0,1 -c,--cpu-shares=0 CPU 共享權(quán)值(相對(duì)權(quán)重) cpu-period=0 限制 CPU CFS 的周期,范圍從 100ms~1s,即[1000, 1000000] --cpu-quota=0 限制 CPU CFS 配額,必須不小于1ms,即 >= 1000 --cpuset-mems="" 允許在上執(zhí)行的內(nèi)存節(jié)點(diǎn)(MEMs),只對(duì) NUMA 系統(tǒng)有效
其中--cpuset-cpus用于設(shè)置容器可以使用的 vCPU 核。-c,--cpu-shares用于設(shè)置多個(gè)容器競(jìng)爭(zhēng) CPU 時(shí),各個(gè)容器相對(duì)能分配到的 CPU 時(shí)間比例。--cpu-period和--cpu-quata用于絕對(duì)設(shè)置容器能使用 CPU 時(shí)間。
到此這篇關(guān)于如何使用docker對(duì)容器資源進(jìn)行限制的文章就介紹到這了,更多相關(guān)docker容器資源限制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼
本隨著互聯(lián)網(wǎng)應(yīng)用規(guī)模不斷擴(kuò)大,原有的單一服務(wù)器已經(jīng)無法滿足高并發(fā)和高可用性的要求,本文就來介紹docker搭建nginx實(shí)現(xiàn)負(fù)載均衡的示例代碼,感興趣的可以了解一下2023-12-12
詳解基于docker-swarm搭建持續(xù)集成集群服務(wù)
這篇文章主要介紹了詳解基于docker-swarm搭建持續(xù)集成集群服務(wù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題(解決報(bào)錯(cuò))
這篇文章主要介紹了安裝Docker Desktop報(bào)錯(cuò)WSL 2 installation is incomplete的問題,解決方法很簡(jiǎn)單只需我們自己手動(dòng)更新一下,我們根據(jù)提示去微軟官網(wǎng)下載最新版的wsl2安裝后即可正常打開,需要的朋友可以參考下2021-06-06
kali安裝docker及搭建漏洞環(huán)境的詳細(xì)教程
Docker?是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化,本文重點(diǎn)給大家介紹kali安裝docker及搭建漏洞環(huán)境的過程,感興趣的朋友一起看看吧2022-05-05
嘗試Docker+Nginx部署單頁(yè)應(yīng)用方法
這篇文章主要介紹了嘗試Docker+Nginx部署單頁(yè)應(yīng)用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
docker daemon遠(yuǎn)程連接設(shè)置詳解
本篇文章主要介紹了docker daemon遠(yuǎn)程連接設(shè)置詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái)的詳細(xì)教程
這篇文章主要介紹了借助Docker搭建JMeter+Grafana+Influxdb監(jiān)控平臺(tái),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

