如何给docker容器分配内存和cpu?默认情况下,容器使用的资源是不受限制的。也就是可以使用主机内核调度器所允许的最大资源。但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,下面我们来介绍下。

容器CPU设置

默认设置下,所有容器可以平等地使用主机 CPU 资源并且没有限制。docker 可以通过-c或–cpu-shares设置容器使用 CPU 的权重。如果不指定,默认值为 1024。

与内存限额不同,通过-c设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的 CPU 资源取决于它的 cpu share 占所有容器 cpu share 总和的比例。通过 cpu share 可以设置容器使用 CPU 的优先级。

比如在 host 中启动了两个容器:

docker run --name "container_A" -c 1024 ubuntu
docker run --name "container_B" -c 512 ubuntu

container_A 的 cpu share 1024,是 container_B 的两倍。当两个容器都需要 CPU 资源时,container_A 可以得到的 CPU 是 container_B 的两倍。

需要注意的是,这种按权重分配 CPU只会发生在 CPU资源紧张的情况下。如果 container_A 处于空闲状态,为了充分利用 CPU资源,container_B 也可以分配到全部可用的 CPU。

容器内存限额

与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。 Docker 通过下面两组参数来控制容器内存的使用量。

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

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

当我们执行如下命令:

docker run -m 200M --memory-swap=300M ubuntu

其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。

下面我们使用 progrium/stress 镜像来为容器分配内存。该镜像可用于对容器执行压力测试。执行如下命令:

docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-bytes 280M

–vm 1:启动 1 个内存工作线程。

–vm-bytes 280M:每个线程分配 280M 内存。

如果让工作线程分配的内存超过 300M,分配的内存超过限额,stress 线程报错,容器退出。

如果在启动容器时只指定 -m 而不指定 –memory-swap,那么 –memory-swap 默认为 -m 的两倍,比如:

docker run -it -m 200M ubuntu

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

以上是关于如何给docker容器分配内存和cpu的介绍。西部数码的容器云产品是通过docker技术,在集群服务器上部署容器服务实现,功能强大、简单易用,拥有上万linux镜像,秒级开通,高性价比的容器云产品链接 https://www.west.cn/paas/container/

如何给docker容器分配内存和cpu相关推荐

  1. Docker 容器 jvm 内存参数调整优化

    前言 在使用Docker部署java 项目时,发现容器占用内存很高,导致服务器内存压力大,一个简单的boot项目,占用达到1G多内存,有些容器甚至达到快3G内存,并且发现java -jar 启动的项目 ...

  2. linux查看docker使用率,查看docker容器的内存占用

    使用docker stats命令可以查看容器的内存,但是有时候docker stats命令获得的数据可能准确,可以参考下面这种方式 先通过docker ps -a 找到容器的container id ...

  3. docker 容器占用内存_如何限制Docker容器的内存

    容器何时销毁 现在很多服务采用容器化运行,一个容器中运行一个服务,因为容器的创建和启动都是在秒级,所以这种容器化的部署方式被称之为轻量化部署. 1. 容器中服务进程终止 容器的创建和运行是因某个服务进 ...

  4. Docker容器压力测试查看CPU权重

    #需要安装压力测试工具Stress #下载链接贴在下面 Stress安装包链接: 链接: https://pan.baidu.com/s/1ANz2WqhaehI5E-DL7cHnDw 提取码: ts ...

  5. docker可用容量 查看_查看docker容器占用内存

    ps -ef|grep 容器Id [root@wentao-2 order]# ps -ef|grep 3a61cb3fd4f6 root 7358 12956 0 09:14 ? 00:00:00 ...

  6. Parallels Desktop(PD虚拟机)如何分配内存和CPU核数?

    很多用户在安装了PD虚拟机后,会觉得虚拟机内存太小,那么如何分配虚拟机内存呢?CPU核数该怎么设置?具体操作如下: 1.点Mac系统左上方的苹果小标志,选择关于本机,可以看到此机的基本硬件信息,本机是 ...

  7. 如何设置Docker容器的CPU和内存使用限制

    如何设置Docker容器的CPU和内存使用限制 1. 概述 在很多情况下,我们需要限制docker主机上资源的使用. 在本教程中,我们将学习如何设置docker容器的内存和CPU限制 2. 通过doc ...

  8. Docker容器固定IP分配

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  9. Docker容器内部署Java微服务的内存限制问题

    1. 前言 文末有福利 前两天有同事发现,通过华为云 ServiceStage 的流水线部署基于模板创建的 CSEJavaSDK demo 服务时,会在容器启动过程中报错.初步排查是由于 JVM 占用 ...

最新文章

  1. 【mDNS】本地DNS解析协议
  2. Flurl使用Polly实现重试Policy
  3. JDBC之用元数据将结果集封装为List对象
  4. 具有左,中或右对齐项的Bootstrap NavBar
  5. Android音视频专题(二) 在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采集和播放,并实现读写音频 wav 文件
  6. JDK下载安装教程及环境变量配置
  7. element-tree 实现部门-人员选择(支持ID相同)
  8. JavaScript动态生成HTML元素
  9. 2021年完美解决Gradle下载慢的问题(Android Studio)
  10. 快速查看网页元素的CSS样式
  11. 又一北京“假名媛”曝光,蹭吃蹭喝21天,暴露人性最真实一面
  12. 3dmax给模型添加渐变背景有哪些方法
  13. linux测试dvi接口,支持Linux系统的高清DVI采集卡推荐
  14. 聚观早报 | 特斯拉上海工厂被曝停产;富士相机X-Pro 3已停产
  15. python serial.write_PySerial write()即时时间
  16. inputStream 和FileInputStream 转换
  17. 2020年,拒绝划水,如何规划前端学习新路径?
  18. 微信读书怎么导入txt
  19. 2010年全国职称计算机考试专用教程——Dreamweaver MX 2004/FrontPage 2000网页制作
  20. 植物大战僵尸(8):分析植物的攻击速度

热门文章

  1. 趁周末,来学点进阶知识:Java 动态编译
  2. 精美图文讲解Java AQS 共享式获取同步状态以及Semaphore的应用
  3. Windows中现在有独立的Linux文件夹系统
  4. 开学季:当当大促的额外优惠又来啦!150 买 400的书!搓搓搓~
  5. Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(续)
  6. nginx子域名 linux,配置nginx服务器 —— Nginx添加多个二级子域名
  7. error: ‘__declspec‘ attributes are not enabled; use ‘-fdeclspec‘ or ‘-fms-extensions‘ to enabl
  8. All input tensors must be on the same device
  9. CVPR‘21 | Involution:超越convolution和self-attention的神经网络新算子
  10. implementation ‘com.zxy.android:recovery: