Py学习  »  docker

如何限制一组Docker容器的内存资源?

user3397467 • 5 年前 • 502 次点击  

我知道我可以用 --memory --memory-swap 限制每个容器的内存资源。但是,如何限制每个容器组的内存资源?

我的系统有8GB内存,由2个Docker容器组成。我想对两个容器都设置8GB的限制。我不想将每个容器的4GB内存资源限制设置为

  1. 容器可能使用超过4GB的内存。
  2. 两个容器不会同时使用4GB内存,因此将容器A的未使用内存赋予容器B是有意义的。

我试过的东西

  1. docker容器的默认父cgroup是“docker”。Docker”是我的容器的父组。我试图设置父组的限制

    echo 800000000>/sys/fs/cgroup/memory/docker/memory.limit_字节

  2. 我检查了父cgroup“docker”的内存使用情况,但它是0,不等于它的子级内存使用情况之和。

    cat/sys/fs/cgroup/memory/docker/memory.usage以字节为单位返回0

谢谢你的帮助。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38025
 
502 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Gabbax0r
Reply   •   1 楼
Gabbax0r    6 年前

我认为有两种方法可以解决你的问题。

您可以尝试增加每个容器或组合本身的内存使用量。

就像你提到的,你可以在你的撰写选项中传递每个dockerfile。 --内存 --内存交换 .

在docker-compose.yml文件中,可以设置选项/参数以限制或增加资源。

例如。:

version: '3'
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

您可以为每个要组合的容器执行此操作。

文档: https://docs.docker.com/compose/compose-file/#resources