docker修改容器內(nèi)存大小的實現(xiàn)方式
前言
最近在學習公司開發(fā)的平臺業(yè)務,需要將應用部署一遍。我自己電腦內(nèi)存為16g,開了一臺8g內(nèi)存的centos虛擬機。大部分服務都是部署在docker容器內(nèi)的,在docker容器部署pulsar的時候竟然發(fā)現(xiàn)啟動命令沒有內(nèi)存限制,百度了一圈也沒找到可以在哪里添加內(nèi)存限制。只好硬著頭皮啟動服務,結果電腦那叫一個卡呀,8g的內(nèi)存占的滿滿當當?shù)?。使用top查看內(nèi)存占用,發(fā)現(xiàn)pulsar服務占用了兩三個g的內(nèi)存,而且別的應用因為內(nèi)存不夠停掉之后,pulsar還會把剩余的內(nèi)存給占用掉,這nm不是無底洞嗎。于是我想了各種辦法限制pulsar服務的內(nèi)存占用。
1.docker內(nèi)存限制的兩種方式
docker內(nèi)存限制有兩種方式:
- 創(chuàng)建容器時添加-m參數(shù),單位可以是b,k,m,g
- 如果已經(jīng)存在容器,修改該容器的hostconfig.json文件
2.方式一:-m參數(shù)限制
創(chuàng)建容器時我們可以添加-m參數(shù)限制容器的內(nèi)存占用。單位是b,k,m,b
例如:
docker run -dit --name test -m 400m -p 3306:3306 mysql #創(chuàng)建mysql的鏡像實例,并限制容器占用內(nèi)存大小為400m
3.方式二:修改hostconfig.json文件限制
hostconfig.hson
文件是容器的配置文件,每一個容器都有一個對應的 hostconfig.json
配置文件,我們在創(chuàng)建容器時使用的任何參數(shù),都可以在這里配置,功能十分的強勁
1.查找容器對應的hostconfig.json文件
docker ps #找到要修改的容器id,記住它,后面要根據(jù)這個id找文件夾 find / -name hostconfig.json #全局搜索hostconfig.json文件,文件的最后一級目錄就是容器id
通過上面的命令,就可以找到容器對應的hostconfig.json文件了。
2.停止docker
在修改hostconfig.json
文件前,必須要停止docker,否則修改無效
systemctl stop docker
3.修改hostconfig.json文件
通過vi命令修改配置文件,
找到Memory
這一項,修改內(nèi)存大小。請注意:這里的單位默認為bit。最小內(nèi)存限制為4m,也就是,4x1024x1024。我這里修改為700mb,也就是700x1024x1024。
修改完成之后保存退出。
4.啟動docker
systemctl start docker
5.大功告成,完結撒花
補充:docker 運行指定內(nèi)存
-m,--memory 內(nèi)存限制,格式是數(shù)字加單位,單位可以為 b,k,m,g。最小為 4M --memory-swap 內(nèi)存+交換分區(qū)大小總限制。格式同上。必須必-m設置的大 --memory-reservation 內(nèi)存的軟性限制。格式同上 --oom-kill-disable 是否阻止 OOM killer 殺死容器,默認沒設置 --oom-score-adj 容器被 OOM killer 殺死的優(yōu)先級,范圍是[-1000, 1000],默認為 0 --memory-swappiness 用于設置容器的虛擬內(nèi)存控制行為。值為 0~100 之間的整數(shù) --kernel-memory 核心內(nèi)存限制。格式同上,最小為 4M
查看事例:
[root@sannian ~]# docker run -d -m 1G --memory-swap 3G -p 9999:80 --restart=always --name gitlab twang2218/gitlab-ce-zh a3254078a79a084f3f3bed5f4ade3e26c7d86951cd822d95b113227d75b00097
[root@sannian ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a3254078a79a twang2218/gitlab-ce-zh "/assets/wrapper" 21 minutes ago Up 2 minutes (healthy) 22/tcp, 443/tcp, 0.0.0.0:9999->80/tcp gitlab
[root@sannian ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE twang2218/gitlab-ce-zh latest 18da462b5ff5 3 months ago 1.61GB registry-vpc.cn-hangzhou.aliyuncs.com/wenty/jumpserver latest 055f42f305f5 7 months ago 1.41GB registry.cn-hangzhou.aliyuncs.com/wenty/jumpserver latest 055f42f305f5 7 months ago 1.41GB registry.jumpserver.org/public/jumpserver 1.0.0 055f42f305f5 7 months ago 1.41GB registry.jumpserver.org/public/jumpserver latest 055f42f305f5 7 months ago 1.41GB
總結
到此這篇關于docker修改容器內(nèi)存大小的文章就介紹到這了,更多相關docker修改容器內(nèi)存大小內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
ssh 直接登錄docker容器的操作方法(不用通過宿主機進入)
這篇文章主要介紹了ssh 直接登錄docker容器的操作方法(不用通過宿主機進入),本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06docker容器內(nèi)要啟動兩個進程時Dockerfile的實現(xiàn)代碼
這篇文章主要介紹了docker容器內(nèi)要啟動兩個進程時Dockerfile的實現(xiàn)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Docker部署Microsoft Sql Server詳細步驟
大家好,本篇文章主要講的是Docker部署Microsoft Sql Server詳細步驟,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Docker+keepalived+nginx實現(xiàn)主從熱備的方法示例
這篇文章主要介紹了Docker+keepalived+nginx實現(xiàn)主從熱備的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11