docker 容器资源管理

缘起

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

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

docker api似乎真做不到。

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

如:

修改内存限制:

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

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

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

 

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

http://www.tuicool.com/articles/nuE7b2E

参考资料:

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据