最近需要一个sandbox,里面会运行用户的命令、程序。最近初学Docker,所以想利用Docker来实现。
但是看了一些资料,还是没搞明白怎么样才能对Docker容器的内存、CPU、磁盘等进行限制。
昨天试了一下docker run加-m参数来限制内存,算是有点用吧。使用-c来限制CPU,貌似不太可行。运行一个无限fork程序就把整个系统给拖死了。
docker run
-m
-c
fork
所以想问一下究竟应该是怎么用的?
认证0级讲师
-c 不是說限制CPU的使用率,而是一組進程的CPU的相對使用率,它是一個share ratio,你的docker進程在宿主機只是作為一個普通進程與所有其他進程以cgroups定義的單位進行CPU調度的,但是同一個cgroups的CPU限制單位會share這個CPU使用率,所以,如果你有多個docker進程位於同一個cgroups限制單位內,他們會共享使用率,但是不能阻止他們共同造成CPU100 %。
-c 不是說限制CPU的使用率,而是一組進程的CPU的相對使用率,它是一個share ratio,你的docker進程在宿主機只是作為一個普通進程與所有其他進程以cgroups定義的單位進行CPU調度的,但是同一個cgroups的CPU限制單位會share這個CPU使用率,所以,如果你有多個docker進程位於同一個cgroups限制單位內,他們會共享使用率,但是不能阻止他們共同造成CPU100 %。