Search code examples
deploymentdockerlxcfig

How to restrict cpu usage from host to docker container


I have one VM host in one physical server with many docker containers inside.

Here one fragment of my fig.yml

pg:
  image: pg...
redis:
  image: redis...
mongodb:
  image: mongodb...
app:
  image: myapp...

I wish set pg container use only 25% of host cpu and app use only 50% of host cpu and so on.

Could I do it with fig or with docker run and manage link by hand?

In my case when one of this container is running a costly task it affect the cpu performance of the others ones. But when in the same physical server I have others VM with similar deploy inside the problem increase dramatically.


Solution

  • For now, Fig doesn't support setting CPU and memory limitation. Maybe it will support in the future.

    I encourage you to experiment with using docker run -m for memory limit, and docker run -c for CPU shares. These flags will allow you to set memory and CPU values when starting a container. Read more about the flags you can use with docker run here:

    https://docs.docker.com/reference/commandline/cli/#run

    But it can only set when you are create a new container. After creating container, you cannot change the value.