一、资源限制原因:
- 防止容器占用过多资源,影响其他容器或宿主机
- 保证容器稳定运行,避免OOM等情况.
OOM现象:根据优先机制kill掉宿主机上最高的进程从而来释放空间,只要是宿主机的进程都可能被kill掉的。 - 进行资源隔离,提高安全性
二、Docker Compose资源限制
使用docker-compose文件部署PostgreSQL,并设置资源限制。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | version: '3'
|
限制指令为deploy.resources.limits
这部分,注意节点位置,上面这部分限制的含义是:
PostgreSQL服务的CPU使用被限制在最多50%的CPU能力,内存使用被限制在最多500MB。同时,这个服务至少需要25%的CPU和200MB的内存。
我们启动的时候命令需要发生一些变化,否则不会生效:
1 2 3 4 |
|
这里的关键在于添加--compatibility
参数以兼容模式来运行,否则限制不会生效。
三、验证
通过上述方法限制容器CPU和内存后,再继续使用命令:docker stats
查看容器资源使用情况:
可以看到PostgreSQL这个容器被成功限制为500MB
内存。