如何限制docker容器的内存大小

如何限制docker容器内存大小?在docker容器的使用过程中,经常需要对容器可以使用的主机资源进行限制。

限制容器不能过多的使用主机内存是非常重要的。对于 linux 主机来说,一旦内核检测到没有足够的内存可以分配,就会扔出 OOME(Out Of Memmory Exception),并开始杀死一些进程用于释放内存空间。

内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。 Docker 通过下面两组参数来控制容器内存的使用量。

-m 或 –memory:设置内存的使用限额,假如 100M, 2G。

–memory-swap:设置 内存+swap 的使用限额。

当我们执行如下命令:

docker run -m 200M --memory-swap=300M ubuntu

其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。

下面我们使用 /stress 镜像来为容器分配内存。该镜像可用于对容器执行压力测试。执行如下命令:

docker run -it -m 200M --memory-swap=300M /stress --vm 1 --vm-bytes 280M

–vm 1:启动 1 个内存工作线程

–vm-bytes 280M:每个线程分配 280M 内存。

因为 280M 在可分配的范围(300M)内,所以工作线程能够正常工作,如果让工作线程分配的内存超过 300M,分配的内存超过限额,stress 线程报错,容器退出。

如果在启动容器时只指定 -m 而不指定 –memory-swap,那么 –memory-swap 默认为 -m 的两倍,比如:

docker run -it -m 200M ubuntu

容器最多使用 200M 物理内存和 200M swap。

融亿云的容器云产品是通过docker技术,在集群服务器上部署容器服务实现,功能强大、简单易用,拥有上万linux镜像,弹性强大,安全可靠。高可用的的容器云

最后更新:2022/09/05
免责声明:本站部分内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。
如果您发现本社区中有涉嫌抄袭的内容请发送邮件至:Hi@r1yun.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

在线评论