温馨提示×

centos docker怎样限制资源

小樊
32
2026-09-11 17:23:05
栏目: 智能运维

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 和 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 支持)

1️⃣ 限制磁盘读取速度

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

2️⃣ 限制磁盘写入速度

docker run -d --device-write-bps /dev/sda:20mb nginx

3️⃣ 限制 IO 次数

docker run -d --device-read-iops /dev/sda:1000 nginx

四、网络限制(间接方式)

Docker 本身不直接限带宽,但可用:

  • tc (traffic control)
  • 第三方工具(如 docker-network-rate

示例(宿主机):

tc qdisc add dev docker0 root tbf rate 10mbit burst 32kbit latency 400ms

五、使用 docker-compose 限制资源

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

⚠️ 注意:
deploy 仅在 docker stack / swarm 生效
普通 docker-compose up 需写成:

services:
  nginx:
    image: nginx
    cpus: "1.0"
    mem_limit: 512m

六、查看容器资源限制

docker stats

或查看 cgroup:

cat /sys/fs/cgroup/memory/docker/<容器ID>/memory.limit_in_bytes

七、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,部分 IO 限制不支持

如果你有 具体场景(如:限制某个 Java 服务、限制 Docker Compose 项目、限制带宽),我可以给你更精确的命令。

0