【发布时间】:2016-01-07 12:04:35
【问题描述】:
我知道我们可以创建一个这样的内存限制容器
docker run -ti --memory-reservation 1G ubuntu:14.04 /bin/bash
但是如何更新现有容器的内存/CPU 限制?
【问题讨论】:
标签: memory docker containers
我知道我们可以创建一个这样的内存限制容器
docker run -ti --memory-reservation 1G ubuntu:14.04 /bin/bash
但是如何更新现有容器的内存/CPU 限制?
【问题讨论】:
标签: memory docker containers
docker update --memory "1g" --cpuset-cpu "1" <RunningContainerNameOrID>
这将更新“RunningContainerNameOrId”以使用 1g 内存并且仅使用 cpu core 1
更新所有正在运行的容器以使用核心 1 和 1g 内存:
docker update --cpuset-cpus "1" --memory "1g" $(docker ps | awk 'NR>1 {print $1}')
【讨论】:
resource updating isn't supported on Windows 用于 Windows 容器
目前仅 Docker 无法实现动态资源分配。您必须更新 cgroup(控制组)的 cpu/内存份额。您必须创建一个新容器来更改 Docker 的资源限制。
有一个Docker GitHub issue 用于动态资源配置。 This pull request 建议在 Docker 1.10 中使用 docker set 或 docker update 命令添加它。此命令将允许您在运行时更新容器的配置。
如果您在启用 systemd 的系统上运行,您也可以利用它来更改 CPU 或内存份额。可以在this blog post 中找到一个示例。
【讨论】:
如果一个人在 WSL 上运行 docker 并提到如果你在 windows 上运行带有 wsl 集成的 docker,你需要从 .wslconfig 文件中执行此操作,我会节省几个小时。我现在写它是为了如果另一个我出现,现在他们知道诀窍了。 https://itnext.io/wsl2-tips-limit-cpu-memory-when-using-docker-c022535faf6f
这是一个老问题,但如果你出现并需要这个新答案,在那个平台上,至少它会让你思考。
【讨论】: