【问题标题】:Update the limitation of memory/CPU for existing container in docker更新 docker 中现有容器的内存/CPU 限制
【发布时间】:2016-01-07 12:04:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: memory docker containers


    【解决方案1】:

    Docker Update Command

    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 容器
    【解决方案2】:

    目前仅 Docker 无法实现动态资源分配。您必须更新 cgroup(控制组)的 cpu/内存份额。您必须创建一个新容器来更改 Docker 的资源限制。

    有一个Docker GitHub issue 用于动态资源配置。 This pull request 建议在 Docker 1.10 中使用 docker setdocker update 命令添加它。此命令将允许您在运行时更新容器的配置。

    如果您在启用 systemd 的系统上运行,您也可以利用它来更改 CPU 或内存份额。可以在this blog post 中找到一个示例。

    【讨论】:

    • 谢谢Tom,既然你提到的PR已经合并发布了,@oneklc的回答应该是最新的了。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-29
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      相关资源
      最近更新 更多