我可以在 docker-compose 中使用 mem_limit 吗?如何?

Can I use mem_limit in docker-compose? and How?

mem_limit 是否支持 docker-compose?我该如何测试?

我有一个关注docker-compose.yml

repository:
  image: myregistry/my_nginx_image
  mem_limit: 60m
  volumes:
    - /etc/localtime:/etc/localtime
  ports:
    - "80:80"

如何证明容器实际上不超过 60 MB RAM?

我正在使用:

根据documentation,简单

mem_limit: 1000000000

应该够了。我想,您应该放弃 "m",并使用字节而不是兆字节。

您可以在去年写的 post 中找到如何配置 docker 来限制资源(CPU 和内存)以及如何测试您的限制:resource-management-in-docker

是的。 docker-compose 支持内存限制,并且可以像您的示例中那样使用 "m" 设置值(兆字节)。

可以使用 "docker stats" 命令检查为 运行 Docker 容器设置的内存限制。

如果您的容器名称是 "repository_1" 则使用此命令:

docker stats repository_1

这个结果与这个类似:

CONTAINER       CPU %    MEM USAGE/LIMIT    MEM %     NET I/O
repository_1    1.93%    4.609 MiB/60 MiB   7.20%     1.832 KiB/648 B

如果您使用 docker compose v3 而不是:

mem_limit: 60m

您需要在 deploy 部分指定内存限制:

deploy:
  resources:
    limits:
      memory: 60m

此处描述了此更改:https://docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x