全局限制 docker(或 docker-compose)资源

Limit docker (or docker-compose) resources GLOBALLY

我对 docker 和 docker 有点陌生,而且我最近从使用 osx 一年左右的时间切换回 ubuntu。

我正在处理一些非常耗费资源的 docker-compose 项目,在 ubuntu 上配置环境时我偶然发现了一个问题:在mac (https://docs.docker.com/docker-for-mac/) 您可以指定最大资源分配 - 如 hd space、内存 cpu - 对于 [=22= 中的整个系统(可以这么说) ] 应用程序 - 在 ubuntu 我没有在任何地方找到这样的东西。

我看到有一种方法可以为某些特定的容器执行此操作,但是如果我想 - 比如说 - 允许所有容器使用最多 6GB 的内存怎么办?有没有办法做到这一点我没有看到?

非常感谢!

你需要用有限的 CPU 和内存设置一个 cgroup 并引用 Docker 引擎

“/etc/systemd/system/my_docker_slice.slice”中的 cgroup 配置示例:

[Unit]
Description=my cgroup for Docker
Before=slices.target

[Slice]
MemoryAccounting=true
MemoryHigh=2G
MemoryMax=2.5G
CPUAccounting=true
CPUQuota=50%

然后在 /etc/docker/

中更新您的 docker daemon.json
{
  "cgroup-parent": "/my_docker_slice.slice"
}

注:

If the cgroup has a leading forward slash (/), the cgroup is created under the root cgroup, otherwise the cgroup is created under the daemon cgroup.

您可以通过搜索“默认 cgroup 父级”阅读更多内容 here