docker容器资源管理
一 管理容器的资源
1.1 基础知识: linux control groups
Linux Cgroup 可让您为系统中所运行任务(进程)的用户定义组 群分配资源— 比如 CPU 时间、系统内存、网络带宽或者这些资源 的组合。您可以监控您配置的cgroup,拒绝cgroup 访问某些资源, 甚至在运行的系统中动态配置您的 cgroup。所以,可以将 controll groups 理解为 controller (system resource) (for) (process) groups,也就是是说它以一组进程为目标进行系统资源分配和控制。
6.1.1 Linux control groups主要提供了如下功能:
Resource limitation: 限制资源使用,比如内存使用上限以及文件系统的缓存限制。
Prioritization: 优先级控制,比如:CPU利用和磁盘IO吞吐。
Accounting: 一些审计或一些统计,主要目的是为了计费。
Control: 挂起进程,恢复执行进程。
6.1.2 查看linux内核中是否启用了cgroup
1.2 docker对cpu的使用
dockefile构建一个镜像
保存下面的文件命名为: Dockerfile
FROM centos:lates
RUN yum install -y epel-release && yum install -y stress
ENTRYPOINT["stress"]
Docker能够指定(通过运行命令的-c或者--cpu-shares开关)给一个容器的可 用的CPU分配值。这是一个相对权重,与实际的处理速度无关。每个新的容 器默认的将有1024CPU配额,当我们单独讲它的时候,这个值并不意味着什 么。但是如果我们启动两个容器并且两个都将使用 100%CPU,CPU时间将在 这两个容器之间平均分割,因为它们两个都有同样的CPU配额(为了简单起 见,假设没有任何其他进程在运行)
使用下面的方式启动两个容器,运行之前创建好的mycentos
docker run -itd -c 1024 --cpus 4 centos:7
docker run -itd -c 512 --cpus 4 centos:7
注意:第一个容器占用CPU的权重是1024;第二个容器是512
systemctl set-property docker- a92daccba6983f210bf28c4f4f6e2c4c579d58f91a16d4702ee8e4ae7f8a0f5f.sc ope CPUShares=1024
1.3 docker对内存的使用
第一件事需要注意的是,默认一个容器可以使用主机上的所有内存。
如果你想为容器中的所有进程限制内存,使用docker run命令的 -m开 关即可。你可以使用bytes值定义它的值或是添加后缀(k,m或g)。
• 例如:docker run -it -m 128m centos
为了显示限制的实际情况,我将再次使用我的mycentos镜像.
• docker run -it --rm -m 128m mycentos --vm 1 --vm-bytes 128M --vm-hang 0 • -m128m:用于限制容器使用的内存大小 • --vm1:产生一个内存分配的进程 • --vm-bytes 128M:每次分配大小为128M
• --vm-hang 0:分配后立即释放;如果为100,表示分配后不释放,测试100秒
1.4 docker对I/O的使用
使用命令docker help run | grep -E 'bps|IO'得到Docker对I/O管理的 相关参数,如下:

浙公网安备 33010602011771号