资源限制官方介绍

官网:TP 带有内存、CPU 和 GPU 的运行时选项 默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的尽可能多的给定资源。Docker 提 供了控制容器可以使用多少内存或 CPU 的方法,设置docker run命令的运行时配置标志。本节提供有 关何时应该设置此类限制以及设置这些限制的可能影响的详细信息。

其中许多功能需要您的内核支持 Linux 功能。要检查支持,您可以使用该 docker info命令。如果您的 内核中禁用了某个功能,您可能会在输出的末尾看到如下警告: WARNING: no swap limit support

内存限制

## 压测工具
[root@docker02 cicd]# docker pull lorel/docker-stress-ng
## 没有限制内存
docker run --name mem_test -it lorel/docker-stress-ng --vm 2
## 限制了内存
docker run --name mem_test --rm -m 300m -it lorel/docker-stress-ng --vm 2
## 查看状态
docker stats

CPU限制

[root@docker02 cicd]# docker run --name cpu_test --rm -it lorel/docker-stress-ng --
cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 8 cpu
^Cstress-ng: info: [1] successful run completed in 32.24s

[root@docker02 cicd]# docker run --name cpu_test --cpus 1 --rm -it lorel/dockerstress-ng --cpu 8
stress-ng: info: [1] defaulting to a 86400 second run per stressor
stress-ng: info: [1] dispatching hogs: 8 cpu

我们资源限制不是目的,目的是我们要随时监控到我们的资源,能看到容器对宿主机资源的使用,才能更
好的做限制,不要盲目限制,不知道资源使用的情况下,就对容器资源限制,就是在作死。

docker 监控命令

[root@docker01 ~]# docker top wp-web
[root@docker01 ~]# docker ps
[root@docker01 ~]# docker stats

有了上面的命令,我们就可以使用zabbix来监控docker容器了,但是问题就是,zabbix-agent的端口,
我们在宿主机上只能映射出来一个。

解决方案:
1.起多块网卡
2.每个容器装一个zabbix-server
3.修改不同容器的agent端口
4.映射容器的相关文件,然后监控宿主机上的对应文件
5.不用zabbix

容器监控Prometheus

Prometheus:zabbix-server 提供服务端,一个监控页面
cAdvisor:zabbix-agent,获取容器中的数据
node_export:zabbix-agent,监控docker宿主机
grafana:图形化展示工具