限制容器对内存的使用 – 每天5分钟玩转 Docker 容器技术(27)
一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 host 的性能。
与操作系统类似,容器可使用的内存包括两部分:物理内存和 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 内存。
运行结果如下:
因为 280M 在可分配的范围(300M)内,所以工作线程能够正常工作,其过程是:
1、分配 280M 内存。
2、释放 280M 内存。
3、再分配 280M 内存。
4、再释放 280M 内存。
5、一直循环
如果让工作线程分配的内存超过 300M,结果如下:
分配的内存超过限额,stress 线程报错,容器退出。
如果在启动容器时只指定 -m 而不指定 --memory-swap,那么 --memory-swap 默认为 -m 的两倍,比如:
docker run -it -m 200M ubuntu
容器最多使用 200M 物理内存和 200M swap。
内存限额就讨论到这里,下一节我们将学习如何限制容器对 CPU 资源的使用。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/53995.html
DockerUbuntu虚拟机相关文章
- 1.必须要掌握的docker基本概念
- docker启动mysql并打开远程连接「建议收藏」
- docker 权限问题 Got permission denied while trying to connect to the Docker daemon socket at 。。。「建议收藏」
- Docker镜像详解(手拉手教你上传至阿里云,发布到私有库)
- MQTT X Newsletter 2022-08 | v1.8.2 发布、支持使用 Docker
- Docker 网络
- Docker部署_docker部署网站
- 产品能力|云原生能力知识体系构建-Docker学习笔记Part4
- Docker网络
- 修改Docker中nginx容器默认的端口号配置[通俗易懂]
- docker端口映射成功 不可用_docker启动后访问拒绝连接
- Docker - docker-compose方式搭建高效的开发环境
- Centos离线安装docker
- docker高级篇第二章-分布式存储之实战案例:3主3从redis集群扩容配置
- Docker启动容器命令(docker start 容器名称)
- Docker关闭容器命令(docker stop)
- Docker删除容器命令(docker rm)
- 怎么安装Docker并运行Ubuntu系统?
- 「 【Docker】用docker运行2048小游戏(玩转docker) 」
- 「 【Docker】linux安装docker compose(小白安装) 」
- docker-compose一个应用启动多个节点
- 【Docker 系列】docker 学习 四,镜像相关原理
- 【Docker 系列】docker 学习 五,容器数据卷
- 尝试了数种方法,我坚信使用Docker在Mac上构建Linux环境是最靠谱的
- Docker从入门到精通(三)
- Docker常用命令,值得收藏!
- 深入研究Docker联合文件系统
- Docker启动容器出现No Such File Or Directory排查
- docker 内存满了服务异常退出,强制重启造成服务无法运行详解程序员
- Docker Compose安装详解架构师
- 使用Docker安装Redis并配置成功(docker安装redis)
- 使用Docker安装Redis,一步到位!(docker安装redis)