指定docker容器内存_docker19.03限制容器使用的内存资源

一,指定内存大小的参数:

[root@localhost liuhongdi]# docker run -idt --name kafka2 --hostname kafka2 -m 200M --memory-swap 230M --privileged kafka:0.1 /usr/sbin/init

5286d44361bfffcb334044f02b7ebe2399a7949aa5d139b1f226e7813a1b3e35

参数:

-m 或 --memory:设置内存的使用限额,例如 100M, 2G

–memory-swap:设置 内存+swap 的使用限额

注意:

1,默认情况下,memory和memory-swap参数的值为 -1,即对容器内存和 swap 的使用没有限制。

2,如果在启动容器时只指定 -m 而不指定 --memory-swap,

那么 --memory-swap 默认为 -m 的两倍,比如:

docker run -it -m 200M ubuntu

容器最多使用 200M 物理内存和 200M swap

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,从docker inspect中可以看到设置值:

1,docker inspect查看memory

[root@localhost liuhongdi]# docker inspect kafka2 | grep -i memory"Memory": 209715200,"KernelMemory": 0,"KernelMemoryTCP": 0,"MemoryReservation": 0,"MemorySwap": 241172480,"MemorySwappiness": null,

2,docker inspect查看memory+swap

[root@localhost liuhongdi]# docker inspect kafka2 | grep -i memoryswap"MemorySwap": 241172480,"MemorySwappiness": null,

三,用docker stats中查看内存限额:

[root@localhost liuhongdi]# docker stats kafka2 --no-stream

CONTAINER ID NAME CPU% MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

5286d44361bf kafka20.02% 57.62MiB / 200MiB 28.81% 12.5MB / 222kB 19.7MB / 1.15MB 5

LIMIT一项是我们指定的内存限额数量

四,在容器中测试内存占用的限额是否起作用?

1,

在容器中安装stress

[root@kafka2 source]# wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/s/stress-1.0.4-16.el7.x86_64.rpm

[root@kafka2 source]# rpm -ivh stress-1.0.4-16.el7.x86_64.rpm

2,执行测试:

[root@kafka2 source]# stress --vm 1 --vm-bytes 280M

stress:info: [261] dispatching hogs: 0 cpu, 0 io, 1 vm, 0hdd

stress: FAIL: [261] (415)

stress: FAIL: [261] (451) failed run completed in6s

[root@localhost liuhongdi]#

线程报错,容器退出了

因为280M超出最大200M的限额

3, stress命令两个参数的含义:

-m --vm n 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数

--vm-bytes B 指定malloc时内存的字节数 (默认256MB)

--vm-hang N 指示每个消耗内存的进程在分配到内存后转入休眠状态,与正常的无限分配和释放内存的处理相反,

这有利于模拟只有少量内存的机器

4,用docker ps -a查看

[root@localhost liuhongdi]# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

5286d44361bf kafka:0.1 "/usr/sbin/init" 16 minutes ago Exited (137) 4 minutes ago kafka2

状态成了 :Exited

5,说明:生产环境中,对docker进行内存限额非常重要,

否则很容易出现容器给整个主机造成oom

五,查看docker的版本:

[root@localhost liuhongdi]# docker --version

Docker version 19.03.8, build afacb8b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值