Unix系统下如何调整Docker Engine的内存分配上限?
Unix/Linux 环境Docker Engine内存调整方案
注意:原生Unix/Linux环境下的Docker Engine和Mac/Windows端的Docker Desktop运行逻辑不同,默认没有固定内存上限,可直接使用宿主机全部可用内存。若你遇到构建内存不足的情况,优先检查是否是daemon配置了默认内存限制,或是宿主机本身物理内存不足。
方案1:单次docker build临时指定内存
仅针对本次构建分配更高内存,无需修改全局配置,执行命令时添加--memory参数即可:
# 示例:分配4GB内存给当前构建进程,单位支持k/m/g docker build --memory 4g .
方案2:全局修改Docker默认内存限制
需要所有容器、构建操作默认使用更高内存上限的场景,按以下步骤操作:
- 编辑Docker daemon配置文件,路径为
/etc/docker/daemon.json,若文件不存在可直接新建 - 添加对应配置参数,示例如下:
{ // 设置所有容器/构建默认内存上限为4GB,可根据需求调整数值 "default-memory": "4g", // 解除内存锁限制,适合大内存构建场景 "default-ulimits": { "memlock": { "Name": "memlock", "Hard": -1, "Soft": -1 } } }
- 保存配置后,重启Docker服务使配置生效:
systemctl daemon-reload systemctl restart docker
- 验证配置是否生效,执行以下命令查看Docker内存相关配置:
docker info | grep -i memory
特殊场景:WSL2下的Docker内存调整
如果你使用的是Windows Subsystem for Linux 2(WSL2)环境下的Docker,需要先调整WSL2本身的内存上限:
- 打开Windows用户目录(一般是
C:\Users\你的用户名),新建/编辑.wslconfig文件,添加如下配置:
[wsl2] memory=4GB # 调整为你需要的内存大小 swap=2GB
- 保存文件后,在Windows终端执行命令重启WSL即可生效:
wsl --shutdown
内容的提问来源于stack exchange,提问作者Michi-2142
相关产品推荐
相关产品推荐

