温馨提示×

centos docker怎么限制资源

小樊
36
2026-09-24 02:05:09
栏目: 智能运维

在 CentOS 上使用 Docker 限制容器资源,通常通过 docker run 参数 或 docker-compose 来实现。下面按常见资源类型说明。


一、CPU 限制

1️⃣ 限制 CPU 核心数

docker run -d --cpus=1.5 nginx
  • 表示最多使用 1.5 个 CPU

2️⃣ 绑定指定 CPU

docker run -d --cpuset-cpus="0,1" nginx
  • 只能使用 CPU 0 和 CPU 1

3️⃣ CPU 权重(相对优先级)

docker run -d --cpu-shares=512 nginx
  • 默认 1024,值越大优先级越高(非绝对限制)

二、内存限制

1️⃣ 限制最大内存

docker run -d -m 512m nginx
  • 容器最多使用 512MB 内存

2️⃣ 限制内存 + Swap

docker run -d -m 512m --memory-swap=1g nginx
  • 内存 512MB,Swap 最多 512MB(总 1GB)

3️⃣ 禁止 Swap

docker run -d -m 512m --memory-swap=512m nginx

三、磁盘 IO 限制(CentOS 需支持 cgroup v1)

docker run -d \
  --device-read-bps /dev/sda:10mb \
  --device-write-bps /dev/sda:10mb \
  nginx

限制:

  • 读:10MB/s
  • 写:10MB/s

四、使用 docker-compose 限制资源

version: "3"
services:
  nginx:
    image: nginx
    deploy:
      resources:
        limits:
          cpus: "1.0"
          memory: 512M

⚠️ 注意:

  • deploy.resources 只在 Docker Swarm 生效
  • 单 docker-compose 用:
services:
  nginx:
    image: nginx
    mem_limit: 512m
    cpus: "1.0"

五、CentOS 注意事项

1️⃣ 确认 cgroup 版本

stat -fc %T /sys/fs/cgroup
  • tmpfs → cgroup v1
  • cgroup2fs → cgroup v2(部分限制不完全一样)

2️⃣ CentOS 7

  • 默认 cgroup v1 ✅
  • 支持全部上述参数

3️⃣ CentOS 8 / Stream

  • 可能使用 cgroup v2
  • 建议使用较新 Docker(20.10+)

六、查看容器资源使用

docker stats

如果你有 具体场景(如:只限制某服务、限制 Java 容器、K8s 环境),可以告诉我,我给你更精确配置。

0 踩