You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu全局限制Docker(或Docker Compose)资源?

给Ubuntu上的Docker设置全局总内存上限

Hey there! 刚从Mac转Ubuntu用Docker确实会碰到这种差异——毕竟Mac上的Docker是套了一层虚拟机,那个全局资源设置其实是给虚拟机分配配额;而Ubuntu上Docker是直接跑在Linux内核上,得用Linux原生的cgroup机制来控制总资源,下面给你两种靠谱的实现方式:

方法一:通过Systemd限制Docker服务总内存(永久生效)

这是最推荐的方式,因为Ubuntu用Systemd管理服务,直接给Docker服务设置内存上限就能管住所有容器的总使用量:

  1. 创建/编辑Docker服务的配置文件:
    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo nano /etc/systemd/system/docker.service.d/override.conf
    
  2. 在文件里添加以下内容,把6G改成你想要的总内存上限:
    [Service]
    MemoryLimit=6G
    
  3. 重新加载Systemd配置并重启Docker服务:
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    

这样整个Docker服务(包括所有正在运行的容器)的总内存就被限制在6GB以内了,重启系统后也会保持生效。

方法二:临时设置cgroup内存限制(即时生效,重启失效)

如果只是想临时测试一下总内存限制,可以直接操作cgroup文件(适合Ubuntu 20.04+默认的cgroup v2):

  1. 找到Docker对应的cgroup切片路径,一般是/sys/fs/cgroup/docker.slice
  2. 设置内存上限:
    echo 6G | sudo tee /sys/fs/cgroup/docker.slice/memory.max
    

这个命令执行后立刻生效,但重启系统或Docker服务后会恢复默认,适合临时调试用。

补充说明

如果你还想给单个容器设置默认的资源限制(比如每个容器最多用2GB),可以编辑/etc/docker/daemon.json文件添加默认配置:

{
  "default-resources": {
    "memory": "2G"
  }
}

改完后重启Docker即可,但这个是单容器的默认值,和总上限不冲突——总上限会管住所有容器加起来的内存使用。

内容的提问来源于stack exchange,提问作者Lestat86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 18:07:59