zoukankan      html  css  js  c++  java
  • 限制Docker容器运行资源

    Docker容器在默认情况下会使用宿主机的所有CPU和内存资源,为了明确限制每一个Docker容器的运行资源,需按如下操作进行设置。

    首先,执行:sudo docker info,如果提示:“WARNING: No swap limit support”,表示系统未开启资源隔离支持。

    解决办法:

    1.编辑/etc/default/grub文件
    2.找到GRUB_CMDLINE_LINUX=配置项,并追加“cgroup_enable=memory swapaccount=1”(注意:如果GRUB_CMDLINE_LINUX=内有内容,切记不可删除,只需在后面追加cgroup_enable=memory swapaccount=1并用空格和前面的内容分隔开。)

    其次,在启动容器时指定参数限定CPU和内存资源:
    --cpus=N : 限制CPU核数
    -m or --memory=4096m :容器可使用最大内存为4g,单位可以为 b,k,m,g
    --memory-swap=4096m :只有当--memory设置之后,--memory-swap 才会生效

    例如:

    sudo docker run -it --cpus=4 -m 4096M --memory-swap=4096M -v $(pwd)/config:/data/config ai-media-hub:latest /bin/sh
    sh-4.2#
    

    如何查看真正分配到的资源?

    如上,启动并进入到Docker容器之后,如果是执行top命令,或者cat /proc/cpuinfo等方式查看容器本身的资源信息是行不通的,通过这些命令查看到的都是宿主机本身的信息。

    使用如下命令查看Docker容器真正的资源信息:

    1.查看内存大小

    cat /sys/fs/cgroup/memory/memory.limit_in_bytes
    4294967296
    

    查询结果单位为字节,如上:Docker容器的内存大小为4GB。

    2.查看CPU核数

    expr `cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us` / `cat /sys/fs/cgroup/cpu/cpu.cfs_period_us`
    4
    

    如上:Docker容器分配的CPU核数为4。

    【参考】
    https://www.k2zone.cn/?p=2356 解决docker警告WARNING: No swap limit support
    https://www.cnblogs.com/cptao/p/10936256.html docker内存限制
    https://blog.csdn.net/hknaruto/article/details/107511106 Docker在容器中获取当前实例内存限制、CPU限制


    作者:编程随笔
    出处:http://www.cnblogs.com/nuccch/
    声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。

  • 相关阅读:
    典型用户和场景总结
    排球的详细记分规则
    js 实现全选
    博客搬家啦!
    leetcode #980 不同路径||| (java)
    ADV-299 宰羊 (java,过了30%)
    ADV-292 计算行列式 java
    ADV-302 秘密行动 java
    ADV-297 快速排序 java
    ADV-298 和谐宿舍2 动态规划
  • 原文地址:https://www.cnblogs.com/nuccch/p/14722701.html
Copyright © 2011-2022 走看看