Docker容器资源限制及压力测试

一、容器的资源限制

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   #会循环分配内存并打印

发布了382 篇原创文章 · 获赞 306 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/lixinkuan328/article/details/103883652