Debian Docker资源隔离实践
一 核心机制与原理
二 快速上手 容器运行时限制
docker run -it --cpus="1.5" debian:bookwormdocker run -it --cpu-shares=512 debian:bookworm(仅在资源竞争时生效)docker run -it --memory="512m" debian:bookwormdocker run -it --memory="512m" --memory-swap="1g" debian:bookworm(需先设置 memory;--memory-swap=-1 表示无限制交换)docker run --device-read-bps /dev/sda:1mb debian:bookwormdocker run --device-write-bps /dev/sda:10mb debian:bookwormdocker stats 实时查看 CPU%、MEM USAGE/LIMIT、MEM %、NET I/O、BLOCK I/O。三 编排与全局配置
version: "3.8"
services:
app:
image: debian:bookworm
deploy:
resources:
limits:
cpus: "1"
memory: "512M"
reservations:
cpus: "0.5"
memory: "256M"
注:使用 docker stack deploy 或在 Swarm 模式下生效;单机 docker-compose up 需启用 Compose 的 swarm 模式或改用其它方式设置资源。{
"default-ulimits": {
"nofile": { "Name": "nofile", "Soft": 65536, "Hard": 65536 }
}
}
修改后执行:sudo systemctl restart dockerWARNING: No swap limit support):/etc/default/grub,在 GRUB_CMDLINE_LINUX 末尾追加:cgroup_enable=memory swapaccount=1,然后更新 GRUB 并重启:sudo update-grub && sudo reboot。四 验证与排错
cat /sys/fs/cgroup/memory/memory.limit_in_bytesexpr $(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) / $(cat /sys/fs/cgroup/cpu/cpu.cfs_period_us)(结果为分配的核数)top/hostnamectl 等看到的是宿主机信息:属正常,需读取 cgroups 文件或 docker stats 查看容器视角配额。五 安全加固与进一步隔离
--cap-add)或移除危险能力(--cap-drop)。