如何设置Docker容器的CPU和内存使用限制
如何设置Docker容器的CPU和内存使用限制
1. 概述
在很多情况下,我们需要限制docker主机上资源的使用。
在本教程中,我们将学习如何设置docker容器的内存和CPU限制
2. 通过docker run来限制Docker容器资源
我们可以使用docker run命令直接设置资源限制。这是一个简单的办法。但是,该限制于只适用于映像的一次特定执行任务
2.1 Memory 内存限制
例如,让我们将容器可以使用的内存限制为512mb
docker run -m 512m nginx
1
我们还可以设置一个软限制或者叫保留,当docker检测到主机内存不足时激活:
docker run -m 512m --memory-reservation=256m nginx
1
2
2.2 CPU 限制
默认情况下,访问主机的CPU是无限制的,我们可以使用CPUs参数设置cpu限制。例如,让我们约束容器最多使用两个cpu:
docker run --cpus=2 nginx
1
2
我们还可以指定CPU分配的优先级。默认值是1024,数字越高优先级越高:
docker run --cpus=2 --cpu-shares=2000 nginx
1
2
与内存保留,当计算能力不足且需要在竞争进程之间进行分配时,CPU共享起主要作用
3. 使用docker-compose文件来设置容器资源
我们可以使用docker-compose文件来实现类似的结果。请注意,不同版本的docker-compose的格式设置上是不同的
3.1 docker swarm Versions 3 以上的版本
让我们给Nginx的服务限制是一半的CPU和512m的内存,保留四分之一的CPU和128m的内存。我们需要在我们的服务配置中创建“部署”和“资源”分段:
services:
service:
image: nginx
deploy:
resources:
limits:
cpus: 0.50
memory: 512M
reservations:
cpus: 0.25
memory: 128M
1
2
3
4
5
6
7
8
9
10
11
12
一般情况下容器的cpus使用被限制在一半,内存为512MB ,如果服务器资源紧张的时候,cpus占用变为1/4,内存占用被限制为128MB
如果要使用上述docker-compose.yaml部署应用我们需要使用docker stack命令 , 部署应用到swarm中
docker stack deploy --compose-file docker-compose.yml bael_stack
1
3.2 docker-compose Version 2 配置方式
在旧版本的docker-compose中,我们可以将资源限制放在与服务的主要属性相同的级别上。它们的名字也略有不同:
service:
image: nginx
mem_limit: 512m
mem_reservation: 128M
cpus: 0.5
ports:
- "80:80"
1
2
3
4
5
6
7
要部署上面的docker-compose.yaml应用,我们需要执行:
docker-compose up
1
2
4. 验证容器资源使用
一但,我们设置了Docker容器的资源使用,我们可以用docker stats命令来检查设置
$ docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
8ad2f2c17078 bael_stack_service.1.jz2ks49finy61kiq1r12da73k 0.00% 2.578MiB / 512MiB 0.50% 936B / 0B 0B / 0B 2
1
2
3
4
5
5. 结论
本文中,我们讨论了如何设置Docker容器资源的设置方法
————————————————
版权声明:本文为CSDN博主「kerongao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kerongao/article/details/110385425
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效