最近需要一个sandbox,里面会运行用户的命令、程序。最近初学Docker,所以想利用Docker来实现。
但是看了一些资料,还是没搞明白怎么样才能对Docker容器的内存、CPU、磁盘等进行限制。
昨天试了一下docker run
加-m
参数来限制内存,算是有点用吧。使用-c
来限制CPU,貌似不太可行。运行一个无限fork
程序就把整个系统给拖死了。
所以想问一下究竟应该是怎么用的?
最近需要一个sandbox,里面会运行用户的命令、程序。最近初学Docker,所以想利用Docker来实现。
但是看了一些资料,还是没搞明白怎么样才能对Docker容器的内存、CPU、磁盘等进行限制。
昨天试了一下docker run
加-m
参数来限制内存,算是有点用吧。使用-c
来限制CPU,貌似不太可行。运行一个无限fork
程序就把整个系统给拖死了。
所以想问一下究竟应该是怎么用的?
2 回答2.5k 阅读✓ 已解决
2 回答853 阅读✓ 已解决
1 回答1.5k 阅读✓ 已解决
2 回答1.4k 阅读
2 回答1.3k 阅读
1 回答1.6k 阅读
1.1k 阅读
-c 不是说限制CPU的使用率,而是一组进程的CPU的相对使用率,它是一个share ratio,你的docker进程在宿主机只是作为一个普通进程与所有其他进程以cgroups定义的单位进行CPU调度的,但是同一个cgroups的CPU限制单位会share这个CPU使用率,所以,如果你有多个docker进程位于同一个cgroups限制单位内,他们会共享使用率,但是不能阻止他们共同造成CPU100%。