Docker 在 Linux 中的资源限制设置
一 核心概念与前置检查
二 CPU 限制
-c 512 与 -c 1024 在争用时约为 1:2。--cpu-period=50000 --cpu-quota=25000 约等于 50% CPU。docker run -it --rm --cpuset-cpus="0,3" --cpus=2 ubuntu:24.04 bashdocker run -it --rm --cpu-period=100000 --cpu-quota=75000 ubuntu:24.04 bash(约 75% CPU)三 内存与 swap 限制
-m=1G(不设置 --memory-swap):可用 内存 1G + swap 1G(等同设置 --memory-swap=2G)。-m=1G --memory-swap=3G:可用 内存 1G + swap 2G。-m=1G --memory-swap=-1:内存 1G,swap 不限制(受宿主机 swap 总量约束)。--oom-kill-disable 前务必设置 -m,避免系统无约束被杀。-m 500M --kernel-memory 50M。cgroup_enable=memory swapaccount=1update-grub 或发行版对应命令)docker run -it --rm -m 512M --memory-swap=512M ubuntu:24.04 bashdocker run -it --rm -m 1G --memory-swap=-1 ubuntu:24.04 bash四 磁盘 I/O 限制
oflag=direct。docker run -it --rm --device-write-bps /dev/sda:30MB ubuntu:24.04 dd if=/dev/zero of=test.out bs=1M count=800 oflag=direct五 验证与编排示例
docker stats <容器名/ID>expr $(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) / $(cat /sys/fs/cgroup/cpu/cpu.cfs_period_us)cat /sys/fs/cgroup/memory/memory.limit_in_bytesversion: "3.7"
services:
app:
image: nginx:1.25
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
reservations: 字段(部分环境/模式支持)。