一、容器的资源限制
1.1、限定 memory 为 200 M
语法:docker run --memory=200M [container_name] [option]
eg: docker run -it --memory=200M [stress_container] --vm 1 --vm-bytes=300M --verbose
(限定容器为200M内存, 但请求内存为300M 会报错)
注: --memory-swap bytes 没有设置,同--memory=200M,实际申请了400M内存
1.2、限定 cpu 的使用情况
语法: docker run --cpu-shares (CPU 共享数 表示CPU 使用权重)
eg: docker run --cpu-shares=5 --name=test1 [stress_container] --cpus 1
docker run --cpu-shares=10 --name=test2 [stress_container] --cpus 1
1.3、底层技术支持
- Control groups : 做资源限制
eg: cpu memory 的 资源限制
- Namespace: 做隔离 pid , net , ipc , mnt , uts
eg: 不同的 Container 之间是相互隔离的
- Union System file: 做 Container 和 image 的分层
eg: image history [image_name] 的分层
二、Linux压力测试--stress工具
2.1、实际操作
1. 创建一个 ubuntu 的容器: docker run -it ubuntu
2. 安装 stress 工具: apt-get update && apt-get install -y stress
3. stress 命令
stress --vm [number] 标示创建几个进程
--vm-bytes [number] 为每一个进程分配多少字节的内存 默认256M内存
--verbose 循环分配 创建的进程 并释放
如果分配太多内存的话 会报超出内存限制的错误 (不会超过宿主机的内存)
eg: stress --vm 1 --vm-bytes 50000M --verbose 就会报错
2.2、使用dockerFile 进行操作 ENTRYPOINT + CMD 动态输入参数的方式 的运行方式
1、创建 ubuntu-stress 并进入 ubuntu-stress
mkdir ubuntu-stress && cd ubuntu-stress
2、创建 Dockerfile 并写入
FROM ubuntu
RUN apt-get update && apt-get install -y stress
ENTRYPOINT ["/usr/bin/stress"]
CMD []
注:CMD [] 用来接收参数
3、通过 docker build 生成 image
docker build -t [image_name] .
4、使用docker run 传入参数
eg: docker run -it [image_name] --vm 1 --verbose #会循环分配内存并打印