温馨提示×

Docker在Debian上的资源如何限制

小樊
64
2025-08-18 03:06:31
栏目: 智能运维

在Debian上可通过以下方式限制Docker资源:

  1. 命令行参数docker run

    • CPU限制--cpus(指定核心数,如--cpus=1.5)、--cpuset-cpus(绑定指定核心,如--cpuset-cpus="0,2")。
    • 内存限制--memory(硬限制,如--memory=512m)、--memory-swap(总内存+交换空间,建议与--memory一致)、--memory-reservation(软限制,低于硬限制时触发)。
    • 磁盘I/O限制--blkio-weight(设置权重,10-1000)。
  2. Docker Compose
    docker-compose.yml中通过deploy.resources配置:

    services:  
      app:  
        image: nginx  
        deploy:  
          resources:  
            limits:  
              cpus: '1'  
              memory: 512M  
            reservations:  
              cpus: '0.5'  
              memory: 256M  
    
  3. cgroups手动配置

    • 创建cgroup并设置资源:
      sudo cgcreate -g cpu,memory:/my_container  
      echo "500000" > /sys/fs/cgroup/cpu/my_container/cpu.cfs_quota_us  # 限制50% CPU  
      echo "1G" > /sys/fs/cgroup/memory/my_container/memory.limit_in_bytes  # 限制1GB内存  
      
    • 将容器PID加入cgroup:
      sudo cgclassify -g cpu,memory:/my_container $(docker inspect -f '{{.Pid}}' <容器ID>)  
      
  4. Docker Daemon全局配置
    修改/etc/docker/daemon.json,添加默认限制(需重启Docker):

    {  
      "default-ulimits": {  
        "nofile": { "Soft": 65536, "Hard": 65536 }  
      }  
    }  
    

注意:部分参数(如--memory-swap)需宿主机内核支持,可通过docker info检查功能是否启用。生产环境建议优先使用docker run或Docker Compose,避免手动操作cgroups的复杂性。

0