在 Ubuntu 上使用 Docker 限制容器内存,常用且推荐的方式是 在 docker run 或 docker-compose 中通过参数指定内存限制。下面按场景说明。
docker run 限制内存docker run -it --memory=512m ubuntu
--memory=512m:容器最多使用 512MB 内存docker run -it --memory=512m --memory-swap=1g ubuntu
--memory,默认 swap = memory 的 2 倍(视系统)docker run -it --memory=512m --memory-swap=512m ubuntu
docker run -it --memory-reservation=256m ubuntu
docker-compose 限制内存version: "3"
services:
app:
image: ubuntu
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
⚠️ 注意:
deploy 配置 只在 swarm 模式或 Compose v2 中生效docker-compose up 建议用:services:
app:
image: ubuntu
mem_limit: 512m
mem_reservation: 256m
docker stats
或查看 cgroup:
cat /sys/fs/cgroup/memory/docker/<container-id>/memory.limit_in_bytes
--memory 必须同时支持 swap 参数WSL2 默认内存限制是整个 WSL:
# %USERPROFILE%\.wslconfig
[wsl2]
memory=4GB
docker run -d \
--name myapp \
--memory=1g \
--memory-swap=1g \
myimage
如果你用的是 特定服务(如 MySQL / Java) 或 Docker Compose / K8s,可以告诉我,我可以给你更具体的配置。