centos

centos上docker资源限制设置

小樊
53
2025-10-17 10:57:04
栏目: 智能运维

CentOS上Docker资源限制设置方法

1. 使用docker run命令直接限制(单容器快速配置)

docker run命令是最基础的容器资源限制方式,适用于临时或单容器场景,支持CPU、内存、磁盘I/O、网络带宽等多种资源类型的限制。

2. 使用Docker Compose配置资源限制(多容器管理)

若使用Docker Compose管理多个容器,可在docker-compose.yml文件的deploy.resources字段中定义资源限制,支持reservations(预留资源)和limits(最大限制)两种类型。

示例配置(docker-compose.yml):

version: '3'
services:
  web:
    image: nginx:latest
    deploy:
      resources:
        reservations:  # 容器启动时预留的资源(确保容器能正常启动)
          cpus: '0.5'       # 预留0.5个CPU核心
          memory: 256M      # 预留256MB内存
        limits:           # 容器运行时的最大资源限制
          cpus: '1'         # 最多使用1个CPU核心
          memory: 512M      # 最多使用512MB内存

启动服务:docker-compose up -d

3. 使用cgroups进行底层细粒度控制(高级用户)

Docker底层依赖Linux cgroups(控制组)实现资源限制,可通过直接操作cgroups文件系统调整资源。需确保Docker使用systemd作为cgroup driver(默认配置)。

4. 修改Docker Daemon全局配置(默认限制)

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

示例配置(限制默认CPU份额、内存交换):

{
  "default-ulimits": {
    "nofile": {  # 文件描述符限制
      "Name": "nofile",
      "Hard": 65535,
      "Soft": 65535
    },
    "nproc": {  # 进程数限制
      "Name": "nproc",
      "Hard": 65535,
      "Soft": 65535
    }
  },
  "exec-opts": ["native.cgroupdriver=systemd"],  # 使用systemd作为cgroup driver
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"  # 日志文件大小限制
  }
}

修改后重启Docker服务使配置生效:systemctl restart docker

注意事项

0
看了该问题的人还看了