docker容器管理 php,docker 容器资源管理

本文探讨了Docker容器的资源限制问题,指出在创建容器时需指定内存和CPU限制,且一旦创建后无法直接通过Docker API修改。然而,通过直接操作cgroup,确实可以调整容器的资源限制,如内存限制。但需要注意,如果容器已使用了超出新限制的资源,调整可能会失败。此外,监控容器资源使用通常需要借助第三方工具,因为直接使用如top、free命令只能查看宿主机的资源状况。
摘要由CSDN通过智能技术生成

缘起

想用docker容器来做传统虚拟机的事情,但是从docker的api接口来看,如果限制容器的资源使用情况,需要在创建容器时指定,如: 内存、cpu等;一旦创建,将无法修改。

但是,资源限制本身就是运行时的事情,何故必须在创建时指定而且无法修改呢?比如:我创建一个容器允许使用4G内存,但是过了一段时间,我想将内存限制调整到8G,难道真的不行吗?

docker api似乎真做不到。

我们知道资源限制是通过cgroup实现的,其实可以跳过docker,直接调整cgroup也应该是可以的; 可以通过mount来查看各子系统都mount到哪里了。

如:

/sys/fs/cgroup/memory/system.slice/docker-49d73de4343c5e43474b55d50c8ab85fdb84f8777faf573122cdbf459b2d3805.scope/

1

/sys/fs/cgroup/memory/system.slice/docker-49d73de4343c5e43474b55d50c8ab85fdb84f8777faf573122cdbf459b2d3805.scope/

修改内存限制:

echo 2g > /sys/fs/cgroup/memory/system.slice/docker-fe4a34eebd0d2c1530186d3fb174ae3efc5a7594576ce873ffd17ab3ef5c7246.scope/memory.limit_in_bytes

1

echo2g>/sys/fs/cgroup/memory/system.slice/docker-fe4a34eebd0d2c1530186d3fb174ae3efc5a7594576ce873ffd17ab3ef5c7246.scope/memory.limit_in_bytes

注意: 1. 如果容器已经使用了4g内存,修改为2g时会失败,错误如下:

fb8a3364294a6aa5e1f62ebbfd28a212.png

2. 把占用内存多的进程先杀掉,让内存使用回归到合理值后,再降低内存配额是可以的

不过,有些东西目前还没发现如何修改,如: hostname

docker容器不同于真正的虚拟机,直接使用top、free等命令看到的是整个宿主机的资源使用状况,而无法知道本容器的资源限制和使用情况,可以借助一些监控软件:

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值