docker - 全局限制 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 的内存怎么办?有没有办法做到这一点我没有看到?
非常感谢!
解决方案
您需要设置一个 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 父级”来阅读更多信息
推荐阅读
- tensorflow - 为什么在自定义损失函数中使用 argmax 不会出现任何错误?
- javascript - SAPUI5如何从二维码图像解码二维码
- xml - xslt key() 函数在有效节点上返回 false?
- excel - 从相邻单元逐步求和
- python - 使用此代码上传文件时,尝试将文件上传到 azure devops 时文件上传损坏
- flutter - 如何正确使 TextFields 与 Flutter Web 上的自动填充一起使用?
- python - 如何在按钮单击另一个小部件时显示小部件
- c++ - `fout.write(reinterpret_cast
(&e), sizeof(e) );` 为什么这里要转换成`const char*`? - javascript - 角度映射对象
- c# - 将应用程序上传到弹性 beantalk AWS 并使 ebextensions 文件选择模式发布或测试