如何解決對Docker容器內(nèi)存限制警告或未實際限制的問題
解決對Docker容器內(nèi)存限制警告或未實際限制的問題
WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
a229353897850843206a76458307a37eaeb3c8e1adf0e58e458b9ed10790cfa8
當試圖在啟動docker容器時使用–memory指令時可能會出現(xiàn)此類警告。
場景
筆者的場景是試圖在一個2G內(nèi)存服務器上加入RabbitMQ,但是內(nèi)存已所剩無幾。為了防止種種問題,需要進行限制。
一個想法是在啟動容器時使用–memory指令限制其內(nèi)存大小。但啟動成功后筆者收到文章上述警告。
含義
這意味著筆者服務器的Linux 內(nèi)核當前沒有啟用對 swap 限制的支持,或者 cgroup 沒有正確掛載。而cgroup(Control Group)是 Linux 內(nèi)核中的一個功能,用于限制、控制和監(jiān)視進程組的資源使用,如 CPU、內(nèi)存、磁盤 I/O 等。
cgroup 允許系統(tǒng)管理員將一組進程組織在一起,并為它們分配資源。
如果你沒有正確掛載cgorup,在這種情況下,雖然你指定了 --memory
限制,但無法限制容器的 swap 內(nèi)存使用。
解決方案
步驟 1:更新 GRUB 配置
- 編輯 GRUB 配置文件:
sudo nano /etc/default/grub
- 在
GRUB_CMDLINE_LINUX_DEFAULT
行中添加cgroup_enable=memory swapaccount=1
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash cgroup_enable=memory swapaccount=1"
這行將引導加載程序的默認內(nèi)核命令行參數(shù),以下是具體參數(shù)釋義:
quiet
: 啟動時禁用大多數(shù)內(nèi)核啟動信息的顯示,使啟動過程更加簡潔。splash
: 啟用啟動時顯示圖形啟動畫面(Splash Screen),通常用于顯示啟動時的廠商標志或進度條。cgroup_enable=memory
: 啟用內(nèi)核的 cgroup 內(nèi)存子系統(tǒng),允許使用 cgroup 來管理和限制內(nèi)存資源。swapaccount=1
: 啟用 swap 賬戶統(tǒng)計。這個參數(shù)使 cgroup 能夠跟蹤和管理交換空間(swap)的使用情況。
- 保存并退出編輯器
步驟 2:更新 GRUB 并重啟
- 更新 GRUB 配置:
sudo update-grub
- 重啟系統(tǒng):
sudo reboot
驗證
通過以下命令檢驗容器是否真的將memory進行了限制。
比如,驗證RabbitMQ的內(nèi)存是否被限制在350mb以內(nèi):
sudo docker stats rabbitmq
得到如下輸出結果:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
7e38b33cd7f7 rabbitmq 0.16% 135.3MiB / 350MiB 67.65% 1.2kB / 0B 56.9MB / 598kB 29
可以發(fā)現(xiàn)在limit一列中,的確將RabbitMQ的內(nèi)存限制在350mb以內(nèi)。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解SpringBoot項目docker環(huán)境運行時無限重啟問題
這篇文章主要介紹了詳解SpringBoot項目docker環(huán)境運行時無限重啟問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11Docker 簡單部署 ElasticSearch的實現(xiàn)方法
這篇文章主要介紹了Docker 簡單部署 ElasticSearch的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09Docker容器中數(shù)據(jù)卷volumes的使用
volume(卷)用來存儲docker持久化的數(shù)據(jù),其實就是一個主機上的一個目錄,由docker統(tǒng)一管理,下面這篇文章主要給大家介紹了關于Docker容器中數(shù)據(jù)卷volumes使用的相關資料,需要的朋友可以參考下2022-04-04Docker容器網(wǎng)絡配置全攻略之橋接、Host、container詳解
這篇文章主要介紹了Docker容器網(wǎng)絡配置全攻略之橋接、Host、container的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04Docker 修改docker存儲位置 修改容器鏡像大小限制操作
這篇文章主要介紹了Docker 修改docker存儲位置 修改容器鏡像大小限制操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11