一 引言
我们使用docker时,经常会遇到docker容器使用内存大于docker宿主机内存,导致宿主机奔溃,从而影响其他宿主机上容器的运行。 因此我们在使用docker容器的时候需要限制内存。
二 命令
1 启动容器时限制容器内存
docker run -m 4g --memory-swap -1
2 限制已启动容器的内存
docker stop containerId
docker update containerId -m 4g --memory-swap -1
docker start containerId
备注:命令详解
--memory 或 -m 限制容器的内存使用量(如10m,200m等)
--memory-swap # 限制内存和 Swap 的总和,不设置的话默认为--memory的两倍
'''
如果只指定了 --memory 则 --memory-swap 默认为 --memory 的两倍
如果 --memory-swap 和 --memory 设置了相同值,则表示不使用 Swap
如果 --memory-swap 设置为 -1 则表示不对容器使用的 Swap 进行限制
如果设置了 --memory-swap 参数,则必须设置 --memory 参数
后期 update --memory 时数值不能超过 --memory-swap 的值,否则会报错 Memory limit should be smaller than already set memoryswap limit
'''
3 查询是否配置成功
docker inspect containerId
三 遇到的错误
1 ubuntu 宿主机系统默认未开启swap限制
(1) 错误表现:
Your kernel does not support swap limit capabilities or the cgroup is not mounted
(2)解决方案
// 1 打开/etc/default/grub文件
sudo vi /etc/default/grub
// 2 加入下面配置
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
// 3 更新grub系统
sudo update-grub
// 4 重启电脑
2 命令中未设置–memory-swap
(1)错误表现
Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same time
(2)错误原因
ocker 默认没有启用memory-swap交换内存,直接设置了内存问题会出问题,也就是说宿主 swap 支持使用多少则容器即可使用多少
(3)解决方式
设置内存的同时必须设置–memory-swap文章来源:https://www.toymoban.com/news/detail-535977.html
四 衍生docker命令官网
docker 命令官网
docker run
docker update文章来源地址https://www.toymoban.com/news/detail-535977.html
到了这里,关于docker限制容器内存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!