在Docker中,可以通过多种方式限制容器的内存使用量,以下是几种主要方法:
docker run
命令时设置内存限制docker run -it --memory="1g" --memory-swap="2g" ubuntu /bin/bash
--memory
或-m
: 设置容器可用的物理内存上限(本例为1GB)--memory-swap
: 设置内存+交换分区的总大小(本例为2GB)docker update
命令更新运行中容器的内存限制docker update --memory="512m" --memory-swap="1g" <container_name_or_id>
version: '3'
services:
myapp:
image: myapp:latest
deploy:
resources:
limits:
memory: 1G
cpus: '0.5'
--memory-reservation
: 设置内存软限制(当主机内存不足时才会强制执行)--oom-kill-disable
: 禁用OOM Killer(不建议使用,可能导致系统不稳定)--kernel-memory
: 限制内核内存使用# 查看容器资源限制
docker inspect <container_name_or_id> | grep -i memory
# 在容器内查看实际限制
cat /sys/fs/cgroup/memory/memory.limit_in_bytes
swap
)设置应至少等于内存限制通过合理设置内存限制,可以防止单个容器占用过多主机资源,提高系统稳定性。