在Debian上可通过以下方式限制Docker资源:
命令行参数(docker run)
--cpus(指定核心数,如--cpus=1.5)、--cpuset-cpus(绑定指定核心,如--cpuset-cpus="0,2")。--memory(硬限制,如--memory=512m)、--memory-swap(总内存+交换空间,建议与--memory一致)、--memory-reservation(软限制,低于硬限制时触发)。--blkio-weight(设置权重,10-1000)。Docker Compose
在docker-compose.yml中通过deploy.resources配置:
services:
app:
image: nginx
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
cgroups手动配置
sudo cgcreate -g cpu,memory:/my_container
echo "500000" > /sys/fs/cgroup/cpu/my_container/cpu.cfs_quota_us # 限制50% CPU
echo "1G" > /sys/fs/cgroup/memory/my_container/memory.limit_in_bytes # 限制1GB内存
sudo cgclassify -g cpu,memory:/my_container $(docker inspect -f '{{.Pid}}' <容器ID>)
Docker Daemon全局配置
修改/etc/docker/daemon.json,添加默认限制(需重启Docker):
{
"default-ulimits": {
"nofile": { "Soft": 65536, "Hard": 65536 }
}
}
注意:部分参数(如--memory-swap)需宿主机内核支持,可通过docker info检查功能是否启用。生产环境建议优先使用docker run或Docker Compose,避免手动操作cgroups的复杂性。