Docker容器对CPU和内存的运行时限制

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

提前致谢

你不能在正在运行的容器内改变它,你必须在你的主机上这样做。

你如何做主机取决于你的主机操作系统,在Linux上我build议看看cgroups ,多数民众赞成在Docker内部限制集装箱。

Ubuntu上你可以使用cgrouppipe理器cgm (在Ubuntu 15.04上试用过)。

  1. 为cpu创build一个新的cgroup,移动该进程(例如28433)并设置一个值
> # cgm create cpu dudecpu > # cgm movepid cpu dudecpu 28433 > # cgm setvalue cpu dudecpu cpu.shares 512 
  1. 为内存创build一个新的cgroup将进程(例如28433)移动到它并设置一个值
 > cgm create memory dudemem > cgm movepid memory dudemem 28433 > cgm setvalue memory dudemem memory.limit_in_bytes 1000000000 
  1. 检查你的新cgroups,看看这些目录,你会发现cgroup的所有属性。
 > 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