命令是干什么的
docker update 用于在不重建容器的前提下调整部分运行时参数,主要是资源类限制:CPU 配额、内存上限、进程数上限等。它适合应急收紧或放宽,也可以给一批存量容器统一补上限制。需要注意的是它只覆盖运行期可变的字段,端口、挂载、网络这类创建期属性仍然只能通过重建容器来变更。
基本信息
| 用途 | 在线调整资源类参数 |
|---|---|
| 语法 | docker update [--cpus] [--memory] [--pids-limit] 容器… |
| 支持范围 | 资源限制与重启策略等可变字段 |
| 不支持 | 镜像、端口、挂载、网络等创建期属性 |
| 适用平台 | 较新版本的 Docker Engine |
典型使用场景
- 应急收紧某个占用过高的容器
- 给历史遗留容器统一补上内存与 CPU 限制
- 压测期间临时放宽限制观察表现
- 调整重启策略以减少异常重启带来的影响
- 变更前记录现值,便于快速回退
调整与核对
调整与核对
docker inspect -f '{{.HostConfig.Memory}} {{.HostConfig.NanoCpus}}' api # 记录现值
docker update --cpus=2 --memory=1g api # 调整限制
docker update --pids-limit=512 api # 调整进程数上限
docker inspect -f '{{.HostConfig.Memory}}' api # 确认已生效
docker stats --no-stream api # 观察调整后的实际用量参数支持情况
| 参数 | 含义 | 可否在线调整 |
|---|---|---|
| --cpus | CPU 配额 | 支持 |
| --memory | 内存上限 | 支持 |
| --pids-limit | 进程数上限 | 支持 |
| --restart | 重启策略 | 支持 |
| 端口与挂载映射 | 创建期属性 | 不支持,需重建容器 |
内存上限调小不会立刻杀死进程,通常要在后续内存分配时才逐步生效,判断是否达到效果需要结合监控指标观察一段时间。
每次变更前记录当前取值,出现异常时可以按记录快速回退到原来的配置。
变更注意事项
- 先记录现值,再执行调整,最后用检查命令复核实际生效值
- 一次只调整一类参数,出问题时能快速定位原因
- 调整内存上限后观察一段时间,确认应用在限额内稳定运行
- 把资源限制同步写进编排文件,避免下次重建容器后参数丢失