目錄
- 前言
- 1.docker內存限制的兩種方式
- 2.方式一:-m參數限制
- 3.方式二:修改hostconfig.json文件限制
- 1.查找容器對應的hostconfig.json文件
- 2.停止docker
- 3.修改hostconfig.json文件
- 4.啟動docker
- 補充:docker 運行指定內存
- 總結
前言
最近在學習公司開發的平臺業務,需要將應用部署一遍。我自己電腦內存為16g,開了一臺8g內存的centos虛擬機。大部分服務都是部署在docker容器內的,在docker容器部署pulsar的時候竟然發現啟動命令沒有內存限制,百度了一圈也沒找到可以在哪里添加內存限制。只好硬著頭皮啟動服務,結果電腦那叫一個卡呀,8g的內存占的滿滿當當的。使用top查看內存占用,發現pulsar服務占用了兩三個g的內存,而且別的應用因為內存不夠停掉之后,pulsar還會把剩余的內存給占用掉,這nm不是無底洞嗎。于是我想了各種辦法限制pulsar服務的內存占用。
1.docker內存限制的兩種方式
docker內存限制有兩種方式:
- 創建容器時添加-m參數,單位可以是b,k,m,g
- 如果已經存在容器,修改該容器的hostconfig.json文件
2.方式一:-m參數限制
創建容器時我們可以添加-m參數限制容器的內存占用。單位是b,k,m,b
例如:
docker run -dit --name test -m 400m -p 3306:3306 mysql #創建mysql的鏡像實例,并限制容器占用內存大小為400m
3.方式二:修改hostconfig.json文件限制
hostconfig.hson
文件是容器的配置文件,每一個容器都有一個對應的 hostconfig.json
配置文件,我們在創建容器時使用的任何參數,都可以在這里配置,功能十分的強勁
1.查找容器對應的hostconfig.json文件
docker ps #找到要修改的容器id,記住它,后面要根據這個id找文件夾 find / -name hostconfig.json #全局搜索hostconfig.json文件,文件的最后一級目錄就是容器id
通過上面的命令,就可以找到容器對應的hostconfig.json文件了。
2.停止docker
在修改hostconfig.json
文件前,必須要停止docker,否則修改無效
systemctl stop docker
3.修改hostconfig.json文件
通過vi命令修改配置文件,
找到Memory
這一項,修改內存大小。請注意:這里的單位默認為bit。最小內存限制為4m,也就是,4x1024x1024。我這里修改為700mb,也就是700x1024x1024。
修改完成之后保存退出。
4.啟動docker
systemctl start docker
5.大功告成,完結撒花
補充:docker 運行指定內存
-m,--memory 內存限制,格式是數字加單位,單位可以為 b,k,m,g。最小為 4M --memory-swap 內存+交換分區大小總限制。格式同上。必須必-m設置的大 --memory-reservation 內存的軟性限制。格式同上 --oom-kill-disable 是否阻止 OOM killer 殺死容器,默認沒設置 --oom-score-adj 容器被 OOM killer 殺死的優先級,范圍是[-1000, 1000],默認為 0 --memory-swappiness 用于設置容器的虛擬內存控制行為。值為 0~100 之間的整數 --kernel-memory 核心內存限制。格式同上,最小為 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