這篇文章主要介紹“Docker容器資源怎么限制”,在日常操作中,相信很多人在Docker容器資源怎么限制問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Docker容器資源怎么限制”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
Memory--memory可以單獨(dú)使用,但是--memory-swap是必須要與--memory一起使用的。正常情況下,--memory-swap的值包含容器可用內(nèi)存和可用swap。所以--memory="300m" --memory-swap="1g" 的含義為:容器可以使用300M的物理內(nèi)存,并且可以使用700M(1G -300M)的swap。--memory-swap 是容器可以使用的物理內(nèi)存和可以使用的swap之和!把--memory-swap設(shè)置為0和不設(shè)置是一樣的,此時(shí)如果設(shè)置了--memory,容器可以使用的swap大小為--memory值的兩倍。如果--memory-swap的值和--memory相同,則容器不能使用swap。如果--memory-swap沒(méi)有設(shè)置,--memory設(shè)置了,則容器可以使用兩倍--memory容量的swap。--memory="300m" --memory-swap沒(méi)有設(shè)置,相當(dāng)于可以使用300m內(nèi)存+600m的swap 如果--memory-swap設(shè)置為-1,相當(dāng)于不限制swap的容量,但是會(huì)受限于host主機(jī)的swap容量 在容器內(nèi)部,free看到的swap是host的swap,并不是容器可用的swap容量 --oom-kill-disable 當(dāng)OOM發(fā)生的時(shí)候,內(nèi)核會(huì)kills掉容器內(nèi)的進(jìn)程,為了改變這種行為,可以在設(shè)置--memory的時(shí)候,同時(shí)設(shè)置--oom-kill-disable。如果沒(méi)有設(shè)置--memory,則host可能會(huì)OOM,這時(shí)候內(nèi)核會(huì)kill host的系統(tǒng)進(jìn)程來(lái)釋放memory
創(chuàng)新互聯(lián)建站是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的十載時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如成都搬家公司等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致稱贊。
Java內(nèi)存分配,由于java程序可以在程序啟動(dòng)的時(shí)候設(shè)置自己的jvm堆棧大小,所以怎么處理容器的內(nèi)存限制和jvm本身的內(nèi)存限制是一個(gè)問(wèn)題。java最近幾年更新也很快,有版本帝的氣質(zhì)了,不同的jdk版本對(duì)容器的支持程度還不一樣。java8u131-在容器內(nèi)部通過(guò)設(shè)置-Xmx參數(shù)來(lái)指定堆棧大小java8u131+ java9-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeapjava10-XX:-UseContainerSupportCPU
Docker的CPU調(diào)度分為兩種,一種是CFS調(diào)度,一種是realtime調(diào)度。
CFS:CFS是linux內(nèi)核默認(rèn)的普通進(jìn)程的調(diào)度cpu調(diào)度策略
Realtime:docker1.13之后還支持realtime調(diào)度,還需要更高版本的內(nèi)核。CFSdocker-1.13+ --cpus個(gè)數(shù),可以是小數(shù),表示容器可以使用的cpu個(gè)數(shù) docker-1.13- --cpu-period和--cpu-quota單位是毫秒,組合起來(lái)表示容器可以使用的cpu個(gè)數(shù),cpus是這兩個(gè)命令的整合--cpuset-cpus 綁定cpu,可以讓容器在固定的host cpu上運(yùn)行--cpu-shares 設(shè)置每個(gè)容器占cpu的權(quán)重,默認(rèn)值是1024,設(shè)置為0表示使用默認(rèn)值1024 Realtime
需要看內(nèi)核是否支持CONFIG_RT_GROUP_SCHED,Docker守護(hù)進(jìn)程啟動(dòng)時(shí),是否添加--cpu-rt-runtime參數(shù)。
--cap-add=sys_nice--cpu-rt-runtime=