docker资源限制

Memory限制:

OOME(内存溢出),一旦发生OOME,任何进程都可能被杀死,包括docker daemon在内。
内存资源限制无非就两种:一种物理内存,一种交换内存(swap)
-m or --memory=    表示设置容器能使用的物理机内存可接受 K,M,B
--memory-swap *    表示设置容器使用物理交换内存的限制,注意:先设置ROM这项才有效。
--oom-kill-disable 这项参数表示设置容器不想被OOME kill掉,必须与-m 一块用
--memory-swappiness 表示使用交换分区的倾向性,"0"表示能不用就不用,"100"表示有一点能用也要用。
--oom-score-adj  int  调整这个参数int范围为(-1000 to 1000)越小越好。

内存与交换分区的区别与联系!

--memory-swap   --memory   功能
   整数S           正数M    容器可用空间为S,其中ram为M,swap为(S-M),若S=M,则无可用swap资源
   0              正数M    相当于未设置swap(unset)
   unset          正数M    若主机(docker host)启用了swap,则容器可用swap为2*M
   -1             正数M    若主机(docker Host)启用了swap,则容器可使用最大主机上所有的swap空间的swap资源。

注意:在容器内使用free命令可以看到的swap空间并不具其所展现的空间指示意义。

CPU资源限制:

CFS scheduler:完全公平调度器
CPU处理进程根据进程的优先级来调度处理的
普通进程120    非实时进程有效范围优先级为100-139 需要调整nice值来调整进程的优先级
nice值为      -2019
实时进程优先级为 0-99
--CPU=<value>  这个参数设置容器使用CPU的核数
--CPUset-CPUS  这个参数设置容器进程固定运行在那个CPU上

内存资源的限制实列:

[root@node2 ~]# docker run --name stress -it --rm -m 256m lorel/docker-stress-ng:latest stress -vm 2
这表示启动一个容器,指明使用内存为256m,运行stress命令启动2个进程进行对内存压测。
stress-ng: debug: [1] 1 processors online
stress-ng: debug: [1] main: can't set oom_score_adj failed, errno=13 (Permission denied)
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 2 vm
stress-ng: debug: [1] starting processes
stress-ng: debug: [1] 2 processes running
stress-ng: debug: [6] : can't set oom_score_adj failed, errno=13 (Permission denied)
stress-ng: debug: [6] stress-ng-vm: started [6] (instance 0)
stress-ng: debug: [7] : can't set oom_score_adj failed, errno=13 (Permission denied)
stress-ng: debug: [7] stress-ng-vm: started [7] (instance 1)
stress-ng: debug: [7] stress-ng-vm: child died: 9 (instance 1)
stress-ng: debug: [7] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 1)
stress-ng: debug: [6] stress-ng-vm: child died: 9 (instance 0)
stress-ng: debug: [6] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 0)
stress-ng: debug: [7] stress-ng-vm: child died: 9 (instance 1)
stress-ng: debug: [7] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 1)
stress-ng: debug: [6] stress-ng-vm: child died: 9 (instance 0)
stress-ng: debug: [6] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 0)
stress-ng: debug: [7] stress-ng-vm: child died: 9 (instance 1)
stress-ng: debug: [7] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 1)
stress-ng: debug: [6] stress-ng-vm: child died: 9 (instance 0)
stress-ng: debug: [6] stress-ng-vm: assuming killed by OOM killer, restarting again (instance 0)
stress-ng: debug: [7] stress-ng-vm: child died: 9 (instance 1)
[root@node2 registry]# docker container ls -a
fsCONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                     PORTS                       NAMES
ddafb3aa39c2        lorel/docker-stress-ng:latest   "/usr/bin/stress-ng …"   10 seconds ago      Up 8 seconds                                           stress
3bba75138e72        vmware/harbor-log:v1.4.0        "/bin/sh -c /usr/loc…"   2 days ago          Up 3 hours (healthy)       127.0.0.1:1514->10514/tcp   harbor-log
33c419f14fe4        tinyh6                          "nginx -g 'daemon of…"   3 days ago          Exited (0) 3 days ago                                  tinyh6
7be147a2755a        tinyh5                          "ls"                     3 days ago          Exited (0) 3 days ago                                  tinyh5
b85b3fd6f010        tinyhttpd3                      "nginx -g 'daemon of…"   3 days ago          Exited (0) 3 days ago                                  tinyhttpd3
d75559396659        84d83ea007ef                    "/bin/sh -c 'cd /usr…"   6 days ago          Exited (1) 6 days ago                                  gifted_buck
500c93a38eb0        84d83ea007ef                    "/bin/sh -c 'cd /usr…"   8 days ago          Exited (1) 8 days ago                                  eloquent_cray
a20ccccce668        busybox                         "sh"                     2 weeks ago         Exited (255) 8 days ago                                b2
7c175579ff63        busybox                         "sh"                     2 weeks ago         Exited (255) 8 days ago                                b1
bf46e9ef9620        busybox                         "sh"                     2 weeks ago         Exited (0) 2 weeks ago                                 web1
244437368c16        yanss/httpd:v0.1-2              "sh"                     3 weeks ago         Exited (137) 2 weeks ago                               web4
57392c202bd2        yanss/httpd:v0.1-1              "sh"                     4 weeks ago         Exited (137) 2 weeks ago                               web3

[root@node2 ~]# docker top stress
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                849                 833                 0                   15:13               pts/0               00:00:00            /usr/bin/stress-ng stress -vm 2
root                968                 849                 0                   15:13               pts/0               00:00:00            /usr/bin/stress-ng stress -vm 2
root                969                 849                 0                   15:13               pts/0               00:00:00            /usr/bin/stress-ng stress -vm 2
root                984                 968                 28                  15:13               pts/0               00:00:00            /usr/bin/stress-ng stress -vm 2
root                985                 969                 51                  15:13               pts/0               00:00:00            /usr/bin/stress-ng stress -vm 2

[root@node2 ~]# docker stats    查看内存的使用率,只限制到256m
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
9cd78767b210        stress              98.72%              256MiB / 256MiB       100.00%             656B / 0B           0B / 0B             5
3bba75138e72        harbor-log          0.00%               3.629MiB / 812.6MiB   0.45%               94.3kB / 55.7kB     0B / 0B             11
^C
[root@node2 ~]# 

CPU资源限制实列:

[root@node2 ~]# docker run --name stress -it --cpus 1 lorel/docker-stress-ng:latest stress --cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 8 cpu
[root@node2 ~]# docker container ls -a
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                     PORTS                       NAMES
71e9e5eca907        lorel/docker-stress-ng:latest   "/usr/bin/stress-ng …"   49 seconds ago      Up 48 seconds                                          stress
3bba75138e72        vmware/harbor-log:v1.4.0        "/bin/sh -c /usr/loc…"   2 days ago          Up 3 hours (healthy)       127.0.0.1:1514->10514/tcp   harbor-log
[root@node2 ~]# docker top stress
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                128738              128721              0                   14:47               pts/0               00:00:00            /usr/bin/stress-ng stress --cpu 8
root                128765              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128766              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128767              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128768              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128769              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128770              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128771              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8
root                128772              128738              12                  14:47               pts/0               00:02:46            /usr/bin/stress-ng stress --cpu 8

[root@node2 ~]# docker stats    查看运行中docker的cpu使用率
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
71e9e5eca907        stress              98.82%              15.81MiB / 812.6MiB   1.95%               656B / 0B           0B / 0B             9
3bba75138e72        harbor-log          0.00%               3.684MiB / 812.6MiB   0.45%               92.6kB / 54.8kB     0B / 0B             11
^C
[root@node2 ~]# 

(2)特定指明使用那个cpu来运行。

[root@node2 ~]# docker run --name stress -it --cpuset-cpus 0 lorel/docker-stress-ng:latest stress --cpu 8
这表示指定0号CPU来运行。因为我本机可用cpu为1,所以只能运行在0号CPU上
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 8 cpu

(3)分享cpu的资源。

[root@node2 ~]# docker run --name stress -it --cpu-shares 1024 lorel/docker-stress-ng:latest stress --cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 8 cpu

[root@node2 ~]# docker top stress
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2557                2542                0                   15:25               pts/0               00:00:00            /usr/bin/stress-ng stress --cpu 8
root                2586                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2587                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2588                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2589                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2590                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2591                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2592                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
root                2593                2557                12                  15:25               pts/0               00:00:15            /usr/bin/stress-ng stress --cpu 8
[root@node2 ~]# 


[root@node2 ~]# docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
41d85a89f54f        stress              99.91%              15.81MiB / 812.6MiB   1.95%               656B / 0B           0B / 0B             9
3bba75138e72        harbor-log          0.00%               3.629MiB / 812.6MiB   0.45%               98.9kB / 58.5kB     0B / 0B             11

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
41d85a89f54f        stress              99.15%              15.81MiB / 812.6MiB   1.95%               656B / 0B           0B / 0B             9
3bba75138e72        harbor-log          0.00%               3.629MiB / 812.6MiB   0.45%               98.9kB / 58.5kB     0B / 0B             11
^C
[root@node2 ~]# 

docker资源限制已经完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值