debian

Debian Docker 资源如何限制

小樊
37
2025-10-27 10:55:16
栏目: 智能运维

Debian系统中Docker资源限制的常用方法

在Debian系统上,可以通过多种方式为Docker容器设置资源限制(包括CPU、内存、磁盘I/O等),以下是具体实现方式及示例:

1. 使用docker run命令参数(临时生效)

这是最直接的资源限制方式,适用于单次启动容器的场景。

2. 使用Docker Compose(适合多容器管理)

通过docker-compose.yml文件定义资源限制,便于团队协作和环境一致性。

version: '3'
services:
  web:
    image: nginx:latest
    deploy:
      resources:
        limits:  # 硬限制(容器不能超过的阈值)
          cpus: '1'      # 最多使用1核CPU
          memory: 512M   # 最多使用512MB内存
        reservations:  # 软限制(容器启动时的最低保障)
          cpus: '0.5'    # 至少保证0.5核CPU
          memory: 256M   # 至少保证256MB内存

启动服务:docker-compose up -d

3. 修改Docker Daemon配置(全局生效)

若需要为所有容器设置默认资源限制,可修改Docker Daemon的配置文件/etc/docker/daemon.json

{
  "exec-opts": ["native.cgroupdriver=systemd"],  // 使用systemd作为cgroup驱动(推荐)
  "default-ulimits": {
    "nofile": {  // 限制文件描述符数量
      "Name": "nofile",
      "Hard": 65536,
      "Soft": 65536
    },
    "memlock": {  // 限制内存锁定大小
      "Name": "memlock",
      "Hard": -1,  // -1表示无限制
      "Soft": -1
    }
  },
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",  // 单个日志文件最大100MB
    "max-file": "3"      // 最多保留3个日志文件
  }
}

修改后重启Docker生效:sudo systemctl restart docker

4. 使用cgroups手动管理(细粒度控制)

通过Linux cgroups直接操作,适合需要更精细调整的场景(如调整CPU调度周期)。

5. 使用systemd服务文件(集成系统服务)

若通过systemd管理Docker服务,可在服务文件中设置资源限制(适用于长期运行的Docker服务)。

注意事项

0
看了该问题的人还看了