更新 docker 中现有容器的 memory/CPU 限制

Update the limitation of memory/CPU for existing container in docker

我知道我们可以像这样创建一个有内存限制的容器

docker run -ti --memory-reservation 1G ubuntu:14.04 /bin/bash

但是如何更新现有容器的 memory/CPU 限制?

目前只有 Docker 无法进行动态资源分配。您必须更新 cgroup(控制组)的 cpu/memory 份额。您必须创建一个新容器才能更改 Docker 的资源限制。

有一个 Docker GitHub issue for dynamic resource configuration. This pull request 建议它将添加到 Docker 1.10 中,使用 docker setdocker update 命令。此命令将允许您在运行时更新容器的配置。

如果您 运行 在启用 systemd 的系统上,您也可以利用它来更改 cpu 或内存份额。可以在 this blog post.

中找到示例

Docker Update Command

docker update --memory "1g" --cpuset-cpu "1" <RunningContainerNameOrID>

这将更新 "RunningContainerNameOrId" 以使用 1g 内存并且仅使用 cpu 核心 1

更新所有 运行 容器以使用核心 1 和 1g 内存:

docker update --cpuset-cpus "1" --memory "1g" $(docker ps | awk 'NR>1 {print }')

即使只有一个人 运行 docker 在 WSL 上,我也会节省几个小时,并且提到如果你是 运行,你需要从 .wslconfig 文件中执行此操作docker 与 wsl 集成,windows。我现在正在写它,因为如果另一个 ME 出现,现在他们知道诀窍了。 https://itnext.io/wsl2-tips-limit-cpu-memory-when-using-docker-c022535faf6f

这是一个老问题,但如果你提出并需要这个新答案,在那个平台上,至少它会让你思考。