Montells
Montells

Reputation: 6679

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

mem_limit is supported by docker-compose? How can I test it?

I have a following docker-compose.yml

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

How can I prove that the container actually does not exceed 60 mb of RAM?

I am using:

Upvotes: 62

Views: 99772

Answers (4)

tigersoft
tigersoft

Reputation: 269

If you use docker compose v3, instead of:

mem_limit: 60m

you need to specify memory limit in deploy section:

deploy:
  resources:
    limits:
      memory: 60m

This change is described here: https://docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x

Upvotes: 4

noisy
noisy

Reputation: 6783

According to documentation, simple

mem_limit: 1000000000

should be enough. I guess, you should drop "m", and use bytes instead of megabytes.

Upvotes: 10

jozala
jozala

Reputation: 5045

Yes. Memory limitation is supported by docker-compose and value can be set as in your example with "m" for megabytes.

It is possible to check what is the memory limit set for running Docker container using "docker stats" command.

If your container name is "repository_1" then use this command:

docker stats repository_1

The result of this will be simillar to this one:

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

Upvotes: 68

enrique-carbonell
enrique-carbonell

Reputation: 6432

You can find how configure docker to limit resources (CPU & MEMORY) and how test your restrictions in this post written last year: resource-management-in-docker.

Upvotes: 1

Related Questions