Docker容器生產實踐1 永遠設定容器記憶體限制

2021-09-19 21:47:40 字數 1999 閱讀 1387

通過下面引數可以為容器設定乙個記憶體使用量硬大小,當超出這個大小時刻,linux系統會根據配置設定決定是否進入oom-killer狀態。

docker run --name zxy-docker -m 1g -it busybox bash

單位為:b,k,m和g

如果設定了-m引數,通常情況下如果容器使用記憶體量超過了設定的硬水線,那麼linux的oom-killer觸發,它將根據oom-score對容器內部程序進行oom kill。但是不影響宿主機上其他程序。

這個引數設定一定需要在容器run或者create過程中使用了-m引數才可以設定。設定了-m引數,如果容器使用記憶體超限了,那麼oom-kill將觸發。如果設定了--oom-kill-disable,那麼容器不會oom,但是此時容器內部申請記憶體的程序將hang,直到他們可以申請到記憶體(容器內其他程序釋放了記憶體)

絕對不要在沒有使用-m的時候設定--oom-kill-disable 因為這會影響到宿主機的oom-killer

docker 設定容器的-m是通過設定memory cgoup的memory.limit_in_bytes實現的。在沒有設定-m的時候這個值為-1,表示容器使用的記憶體不受限制。

例如:`bash>docker run --name zxy-memorylimit -it -m 1g docker-build:12.06 bash

bash>docker inspect zxy-memorylimit|grep -i pid

「pid」:24360

bash>cat /proc/24360/cgroup|grep memory

9:memory:/docker/***xx

bash>cd /sys/fs/cgroups/memory/docker/***x

bash> cat memory.limit_in_bytes

1073741824`

--oom-kill-disable引數實際設定的就是這是了同級目錄之下的memory.oom_control,設定此引數就相當於做了如下動作

bash> echo 1 >memory.oom_control

對linux memory cgroup感興趣的朋友可以參考:

一文在上一節中,我們介紹了-m硬限制容器使用的記憶體資源。一旦設定了這個-m引數,那麼容器內程序使用量超過這個數值,就會被殺或者hang住。docker還提供了一種soft limit就是--memory-reservation,單位和-m一致。當設定了這個引數以後,如果宿主機系統記憶體不足,有新的記憶體請求時刻,那麼linux會嘗試從設定了此引數的容器裡**記憶體,**的辦法就是swap了。那麼如果此容器還在繼續使用記憶體,那麼此容器會遇到很大的效能下降

通常實踐是設定--memory-reservevation 的值小於-m的值。

和-m引數一致,此引數docker也是借助於memory cgroup的memory.soft_limit_in_bytes 實現。

下文節選自

k8s資源限制是通過每個容器containerspec的resources欄位進行設定的,它是v1版本的resourcerequirements型別的api物件。每個指定了"limits"和"requests"的物件都可以控制對應的資源。目前只有cpu和記憶體兩種資源。大多數情況下,deployment、statefulset、daemonset的定義裡都包含了podspec和多個containerspec。這裡有個完整的v1資源物件的yaml格式配置:

`resources:

requests:

cpu: 50m

memory: 50mi

limits:

cpu: 100m

memory: 100mi

其中limits節限制memory設定的就是docker 容器的-m,而且k8s僅僅使用了-m引數其他引數都沒有使用。

基於 Flink 的實時數倉生產實踐

資料倉儲的建設是 資料智慧型 必不可少的一環,也是大規模資料應用中必然面臨的挑戰。在智慧型商業中,資料的結果代表了使用者反饋 獲取資料的及時性尤為重要。快速獲取資料反饋能夠幫助公司更快地做出決策,更好地進行產品迭代,實時數倉在這一過程中起到了不可替代的作用。如何更好的建設實時數倉 有哪些優秀的生產實...

基於 Flink 的實時數倉生產實踐

基 tel13460277366id nnbtw988於 flink 的實時數倉生產實踐簡介 資料倉儲的建設是 資料智慧型 必不可少的一環,也是大規模資料應用中必然面臨的挑戰。在智慧型商業中,資料的結果代表了使用者反饋 獲取資料的及時性尤為重要。快速獲取資料反饋能夠幫助公司更快地做出決策,更好地進行...

Docker容器命令1

容器命令 線索cues 筆記notes 新建並啟動容器 docker run options image command arg.options 說明 options說明 常用 有些是乙個減號,有些是兩個減號 name 容器新名字 為容器指定乙個名稱 d 後台執行容器,並返回容器id,也即啟動守護式...