最近需要一個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 %。