docker 容器是一個開源的應用容器引擎,讓開發者可以以統一的方式打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何安裝了docker引擎的服務器上(包括流行的Linux機器、windows機器),也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和數據中心中運行。最重要的是,他們不依賴于任何語言、框架包括系統。
默認情況下容器使用的資源是不受限制的。也就是可以使用主機內核調度器所允許的最大資源。但是在容器的使用過程中,經常需要對容器可以使用的主機資源進行限制,本文介紹如何限制容器可以使用的主機內存。
為什么要限制容器對內存的使用?
限制容器不能過多的使用主機的內存是非常重要的。對于 linux 主機來說,一旦內核檢測到沒有足夠的內存可以分配,就會扔出 OOME(Out Of Memmory Exception),并開始殺死一些進程用于釋放內存空間。糟糕的是任何進程都可能成為內核獵殺的對象,包括 docker daemon 和其它一些重要的程序。更危險的是如果某個支持系統運行的重要進程被干掉了,整個系統也就宕掉了!這里我們考慮一個比較常見的場景,大量的容器把主機的內存消耗殆盡,OOME 被觸發后系統內核立即開始殺進程釋放內存。如果內核殺死的第一個進程就是 docker daemon 會怎么樣?結果是沒有辦法管理運行中的容器了,這是不能接受的!
針對這個問題,docker 嘗試通過調整 docker daemon 的 OOM 優先級來進行緩解。內核在選擇要殺死的進程時會對所有的進程打分,直接殺死得分最高的進程,接著是下一個。當 docker daemon 的 OOM 優先級被降低后(注意容器進程的 OOM 優先級并沒有被調整),docker daemon 進程的得分不僅會低于容器進程的得分,還會低于其它一些進程的得分。這樣 docker daemon 進程就安全多了。
我們可以通過下面的腳本直觀的看一下當前系統中所有進程的得分情況:
#!/bin/bash for?proc?in?$(find?/proc?-maxdepth?1?-regex?'/proc/[0-9]+');?do ????printf?"%2d?%5d?%sn"? ????????"$(cat?$proc/oom_score)"? ????????"$(basename?$proc)"? ????????"$(cat?$proc/cmdline?|?tr?' 久久久久久国产a免费观看不卡 | 久久人人爽人人爽人人片AV东京热 | 欧美一级久久久久久久大| 久久久久亚洲av成人无码电影| 四虎影视久久久免费| 新狼窝色AV性久久久久久| 久久精品国产精品国产精品污| 国产成人无码精品久久久免费| 久久久久久午夜精品| 国产麻豆精品久久一二三| 99久久精品免费国产大片| 亚洲精品NV久久久久久久久久| 色欲久久久天天天综合网精品| 精品久久久久久无码免费| 亚洲国产精品无码久久久秋霞2| 免费国产99久久久香蕉| 久久夜色精品国产欧美乱| 久久九九免费高清视频| 久久久噜噜噜久久中文福利| 日韩一区二区三区视频久久| 国产韩国精品一区二区三区久久| 亚洲国产精品成人久久蜜臀| 97久久精品人人做人人爽| 国产精品一区二区久久不卡| 国产99久久久国产精品小说| 久久久精品日本一区二区三区| 久久香蕉国产线看观看精品yw| 亚洲国产视频久久| 久久精品国产亚洲一区二区三区| 久久综合九色综合97_久久久| 久久久噜噜噜久久熟女AA片| 亚洲国产精品无码久久98| 2021国内精品久久久久久影院| 欧美精品丝袜久久久中文字幕| 国产一区二区精品久久凹凸| 久久综合给久久狠狠97色| 99久久国产主播综合精品| 色婷婷综合久久久久中文一区二区| 久久精品亚洲男人的天堂| 国产精品成人无码久久久久久 | 久久精品aⅴ无码中文字字幕不卡|