首页 > 解决方案 > 全局限制 docker(或 docker-compose)资源

问题描述

我对 docker 和 docker compose 还很陌生,而且我最近从使用 osx 一年左右的时间回到了 ubuntu。

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

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

非常感谢!

标签: dockerubuntudocker-composeubuntu-18.04docker-container

解决方案


您需要设置一个 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%

然后更新你的码头daemon.json工人/etc/docker/

{
  "cgroup-parent": "/my_docker_slice.slice"
}

笔记:

如果 cgroup 有前导正斜杠 (/),则在根 cgroup 下创建 cgroup,否则在守护进程 cgroup 下创建 cgroup。

您可以通过在此处搜索“默认 cgroup 父级”来阅读更多信息


推荐阅读