Docker启动已停止容器时不会重新分配或调整原始资源限制,这些限制在创建时固化,仅docker create/run阶段生效;需通过docker update或重建容器来变更。

启动已停止的容器时,Docker 不会自动重新分配或调整其原始资源限制(如 CPU、内存、磁盘 I/O 等)。这些限制在容器创建时即固化,重启(docker start)只是恢复运行状态,不修改资源配置。
资源限制在创建时确定,启动时不变更
Docker 容器的资源限制(--memory、--cpus、--blkio-weight 等)属于“创建时选项”(create-time options),仅在 docker create 或 docker run 阶段生效。一旦容器创建完成,这些值就写入容器配置,docker start 仅触发 cgroup 的启用,不会重载或更新限制。
- 例如:用
docker run -m 512m --cpus 1.0 nginx创建并停止后,再执行docker start <container_id>,内存上限仍是 512MB,CPU 配额不变 - 可通过
docker inspect <container_id> | grep -A 5 Memory验证实际生效的限制值
想调整资源?必须重建或更新(部分支持)
若需变更已存在容器的资源限制,有两种可行路径:
-
推荐方式:删除并重建容器 —— 提取原命令参数(可用
docker inspect查看 HostConfig),加入新资源选项重新docker run -
有限更新(仅部分资源) —— Docker 20.10+ 支持
docker update动态调整部分限制(如--memory、--cpus、--restart),但要求容器处于 stopped 或 running 状态;注意:docker update对已停止容器同样有效,且修改会持久化到容器配置中
实际操作建议
日常运维中,更稳妥的做法是:
- 对关键服务,优先使用
docker-compose.yml或编排工具管理资源定义,便于版本化和复用 - 临时调试可先
docker update调整(如docker update --memory 1g <container_name>),再docker start - 避免依赖“启动即重配”的误解——Docker 没有该机制,任何资源变更都需显式操作
不复杂但容易忽略:资源不是随启动刷新的,而是随创建锁定的。










