docker 09 内存、CPU

  1. 背景
  2. 查看内部进程
  3. 查看内存、CPU、IO
  4. 相关参数

背景

在使用 docker 运行容器时,默认的情况下,docker 没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平;大的来说,可能会导致主机和集群资源耗尽,服务完全不可用。

docker 作为容器的管理者,自然提供了控制容器资源的功能。docker 通过 linux 内核的 cgroups 来做容器的资源限制。其中包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。

一旦发生OOM(内存溢出),任何进程都有可能被杀死,包括 docker daemon 在内,为此,docker 特地调整了 docker daemon 的 OOM_Odj 优先级,以免他被杀掉,但容器的优先级并未被调整。经过系统内部复制的计算后,每个系统进程都会有一个 OOM_Score 得分,OOM_Odj 越高,得分越高,(在运行的时候可以调整 OOM_Odj)得分最高的优先被kill掉,当然,你也可以指定重要的容器禁止被杀掉

查看内部进程

docker top <containers_name>

不加容器名则查看全部~

查看内存、CPU、IO

docker stats <containers_name>

不加容器名则查看全部~

相关参数

docker run --name seckill2 -p 8082:8080 -m 1024M --cpus=0.2 -d seckill:v0
  • -m:限制内存使用为1024mb,也可写作1g
  • –cpus:限制CPU使用的百分比,这里设置为100%
  • -–oom-kill-disable=true:发送oom时,避免容器被杀掉

转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:docker 09 内存、CPU

字数:448

本文作者:夏来风

发布时间:2019-09-20, 14:52:42

原始链接:http://www.demo1024.com/blog/docker-cpu/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。