使用docker容器对CPU和内存的运行时约束

时间:2015-06-09 23:39:28

标签: memory-management docker containers cpu-usage

如何在运行时更改docker容器的内存和CPU限制?我的意思是在容器运行时我想更改内存限制,例如

提前致谢

1 个答案:

答案 0 :(得分:4)

您无法在正在运行的容器中更改它,您必须在主机上执行此操作。

你如何在主机上执行此操作取决于你的host-os,在Linux上我建议看一下 cgroups ,这就是docker内部如何限制容器。

ubuntu 上,您可以使用 cgroup manager cgm (在ubuntu 15.04上试用过它)。

  1. 为cpu创建一个新的cgroup,将进程(例如28433)移动到它并设置一个值
  2. > # cgm create cpu dudecpu 
    > # cgm movepid cpu dudecpu 28433 
    > # cgm setvalue cpu dudecpu cpu.shares 512
    
    1. 为内存创建一个新的cgroup,将进程(例如28433)移动到它并设置一个值
    2. > cgm create memory dudemem
      > cgm movepid memory dudemem 28433
      > cgm setvalue memory dudemem memory.limit_in_bytes 1000000000
      
      1. 检查新cgroup的位置并查看这些目录,你会在那里找到cgroup的所有属性。
      2. > find /sys/fs/cgroup/ -name "dude*"
        > /sys/fs/cgroup/memory/user.slice/user-1000.slice/session-c3.scope/dudemem
        > /sys/fs/cgroup/cpu,cpuacct/user.slice/user-1000.slice/session-c3.scope/dudecpu