从Docker的官方文档里可以看到,在通过Docker run 这条命令启动一个容器时,可以通过–cpu-shares –cpu-period以及–cpu-quota 这三个参数来控制容器对CPU的使用。
–cpu-shares
默认情况下所有容器的share是相同的,也就是所有容器有相同的权重,在所有容器一起竞争资源时,最终得到的资源是相同的。
这个share是一个相对的值,那么这个值的意义就不能单纯通过一个容器的share值来看,而是多个在一起对比,比如A和B两个容器,A配置的是1024,B配置的是512,那么A最大可以使用的CPU资源是B的两倍。还有一点要注意的是,这种配置是有弹性的,如果A容器一直闲着,那B容器是可以使用空闲资源的。
–cpu-period和–cpu-quota
把这两个参数放一起是因为这两个参数是相互配合的。–cpu-period和–cpu-quota 的这种配置叫Ceiling Enforcement Tunable Parameters,–cpu-shares的这种配置叫Relative Shares Tunable Parameters。
–cpu-period是用来指定容器服务对CPU的使用要在多长时间内做一次重新分配,而–cpu-quota是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。跟–cpu-shares不同的是,这种配置是指定一个绝对值,而且没有弹性在里面,容器对CPU资源的使用绝对不会超过配置的值。
比如说,A容器配置的–cpu-period=100000 –cpu-quota=50000,那么A容器就可以最多使用50%个CPU资源,如果配置的–cpu-quota=200000,那就可以使用200%个CPU资源。
以上是关于docker如何限制容器的cpu介绍,西部数码的容器云产品是通过docker技术,在集群服务器上部署容器服务实现,功能强大、简单易用,拥有上万linux镜像,秒级开通。
高性价比的容器云产品链接 https://www.west.cn/paas/container/