Docker容器Running状态下动态调整资源配额

梦芳大大_4361

梦芳大大_4361

2026-03-27

374人浏览

原创

在容器运行中可直接用 docker update 动态调整 cpu、内存等资源限制,需 docker 20.10+、cgroup v2 支持;命令如 --cpus=2.5、--memory=1g,但内存不可低于当前使用量,网络限速等不支持热更新。

docker容器running状态下动态调整资源配额

在容器运行中直接调整 CPU、内存等资源限制是可行的,但需满足前提条件并使用正确命令。

确认 Docker 版本与运行时支持

Docker 20.10+ 默认使用 runc 运行时,支持运行中更新资源配额;旧版本或使用 containerd 自定义配置时需确认是否启用 live-restore 和 cgroup v2 支持。Linux 主机必须启用 cgroup v2(推荐),否则部分内存限制(如 --memory-swap)可能无法动态生效。

  • 检查 cgroup 版本:cat /proc/1/cgroup | head -1,输出含 unified 表示 cgroup v2 已启用
  • 验证 Docker 是否支持动态更新:docker version --format '{{.Server.Version}}' ≥ 20.10

使用 docker update 修改运行中容器资源

docker update 是官方支持的动态调整方式,适用于已启动容器,无需重启。

  • 限制 CPU 使用(份额/配额):docker update --cpus=2.5 my-container(分配最多 2.5 个逻辑 CPU)
  • 限制内存上限:docker update --memory=1g --memory-swap=1g my-container(禁用 swap 时 --memory-swap 需等于 --memory
  • 设置内存软限制(可超限):docker update --memory-reservation=512m my-container
  • 限制 blkio 权重:docker update --blkio-weight=300 my-container(范围 10–1000)

注意:修改立即生效,但某些值(如 --cpus)在容器内通过 cat /sys/fs/cgroup/cpu.max 查看时可能需稍等同步;若容器进程本身未主动响应调度变化,实际负载表现可能有延迟。

注意事项与常见限制

并非所有资源都能任意调整,部分操作会失败或被忽略。

  • 不能降低内存限制至低于容器当前已使用量(会触发 OOM Kill),Docker 会报错 failed to update memory limit: invalid argument
  • --pids-limit 支持动态更新,但仅对新创建的进程生效,已有进程不受影响
  • 网络带宽(--network 相关限速)不支持运行中更新,需通过 tc 等宿主机工具手动干预
  • 挂载卷、端口映射、环境变量等非资源类配置无法用 docker update 修改,必须重建容器

验证变更是否生效

调整后建议立即检查容器内 cgroup 文件和运行状态。

  • 进入容器查看 CPU 配额:docker exec my-container cat /sys/fs/cgroup/cpu.max(格式如 250000 100000 表示 2.5 核)
  • 检查内存限制:docker exec my-container cat /sys/fs/cgroup/memory.max(单位为字节,max 表示无限制)
  • 在宿主机执行:docker stats my-container --no-stream 观察实时 CPU / MEM 使用率是否受新配额约束

不复杂但容易忽略。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1569

3

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.06.27

1191

7

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

625

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4259

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5097

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

1893

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

199

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

351

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

340

26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.1万人学习