如何在docker-compose中扩大内存限制

时间:2017-09-28 14:00:01

标签: docker docker-compose

我使用docker-compose来运行服务但它崩溃了,我进入了容器并通过“顶部'”获得了资源信息。如下。

top - 13:43:25 up 1 day,  6:46,  0 users,  load average: 1.82, 0.74, 0.52
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s): 32.2 us, 22.4 sy,  0.0 ni, 40.1 id,  3.0 wa,  0.0 hi,  2.3 si,  0.0 st
KiB Mem:   2047040 total,  1976928 used,    70112 free,      172 buffers
KiB Swap:  1048572 total,  1048572 used,        0 free.    14588 cached Mem

所以我认为我的码头是内存不足。

我已尝试添加

mem_limit: 5g
memswap_limit: 5g
mem_reservation: 5g

进入docker-compose.yml

但似乎行不通。我的问题是,如何通过docker-compose扩大docker的内存限制。

3 个答案:

答案 0 :(得分:0)

泊坞窗引擎具有兼容模式,旨在简化从撰写v2文件到v3的过渡。结果,可以部分使用swarm配置(deploy)为标准docker-compose用法指定资源限制:

要在compatiblity mode中运行,只需添加--compatiblity标志,如下所示:

docker-compose --compatibility up myservice

,您可以使用这样的撰写文件:

version: '3.5'
services:
    myservice:
        image: postgres:12-alpine
        deploy:
            resources:
                limits:
                    cpus: '0.50'
                    memory: 50M

答案 1 :(得分:0)

如果这是在运行Docker Desktop的计算机上,则您必须打开Docker Desktop首选项,然后转到“资源”部分来调整Docker Engine可以使用多少主机资源。

答案 2 :(得分:-1)

documentation中所述,可以在docker-compose中使用以下字段来控制内存和cpu资源。

deploy:
  resources:
    limits:
      cpus: '0.001'
      memory: 50M
    reservations:
      cpus: '0.0001'
      memory: 20M

但是请注意,默认情况下,容器内存使用没有限制,因此设置内存标志不太可能有帮助。