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

如何在Docker中复现Cloud Run的磁盘与内存限制

在Docker中复现Cloud Run的内存与磁盘限制配置

你的猜测是否正确?

是的,你的方向是对的。Cloud Run的4GB总内存配额会拆分为两部分:

  • 2GB分配给基于tmpfs的内存文件系统(包括/、/tmp等挂载点),这些目录的存储完全占用内存;
  • 2GB分配给容器进程的可用RAM(包含/dev/shm的共享内存区域)。
    所以你看到df -h中各个挂载点都显示2GB,是因为Cloud Run将总内存配额平均分配给了内存文件系统和进程内存池。

关于内存限制的命令是否正确?

docker run --memory=2g --memory-swap=2g可以正确设置2GB的进程内存限制:

  • --memory=2g:限制容器进程能使用的物理内存上限为2GB;
  • --memory-swap=2g:将swap空间设置为和物理内存相同,等同于禁止容器使用swap(因为swap总配额=物理内存+swap,这里两者相等意味着swap可用量为0),这和Cloud Run的内存模型一致(Cloud Run容器无法使用swap空间)。

如何设置磁盘(内存文件系统)限制?

要模拟Cloud Run中2GB的内存文件系统限制,需要通过Docker的--tmpfs参数配置根目录的tmpfs大小,同时调整/dev/shm的共享内存大小:

  1. 设置根目录的tmpfs限制:
    使用--tmpfs /:size=2g参数,将容器的根目录挂载为大小2GB的tmpfs,完全模拟Cloud Run中根目录的内存存储约束。
  2. 设置/dev/shm的大小:
    Cloud Run中/dev/shm是2GB的共享内存区域,Docker默认仅分配64MB,因此需要添加--shm-size=2g参数调整。

完整的Docker运行命令

如果你要复现Cloud Run 4GB总配额的配置(2GB进程内存+2GB内存文件系统),完整命令如下:

docker run --memory=2g --memory-swap=2g --tmpfs /:size=2g --shm-size=2g [你的镜像名]

如果你的需求是单独设置2GB内存限制+2GB持久化磁盘限制(与Cloud Run的内存文件系统模型不同),则需要使用Docker的存储配额功能(要求Docker使用支持配额的存储驱动,如overlay2配合启用配额的xfs文件系统),命令如下:

docker run --memory=2g --memory-swap=2g --storage-opt size=2g [你的镜像名]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:24:28