首页主机资讯centos上docker资源如何管理

centos上docker资源如何管理

时间2025-12-15 21:40:04发布访客分类主机资讯浏览598
导读:CentOS 上 Docker 资源管理实践 一 核心维度与常用参数 CPU 配额与份额:使用 –cpus 限制可用 CPU 核数(如 –cpus=1.5);使用 –cpu-shares 设置相对权重(默认 1024,仅在资源竞争时生效...

CentOS 上 Docker 资源管理实践

一 核心维度与常用参数

  • CPU
    • 配额与份额:使用 –cpus 限制可用 CPU 核数(如 –cpus=1.5);使用 –cpu-shares 设置相对权重(默认 1024,仅在资源竞争时生效)。
    • 绑定核:使用 –cpuset-cpus 将容器固定到指定 CPU 核心(如 –cpuset-cpus=“0,1”)。
  • 内存
    • 限额:使用 -m/–memory 设置最大物理内存(如 -m 512m)。
    • 内存+Swap:使用 –memory-swap 设置内存与 Swap 的总上限;仅指定 -m 时,默认 –memory-swap=2×-m;设为 –memory-swap=-1 表示不限制 Swap。
  • 磁盘 I/O
    • 权重:使用 –blkio-weight 调整块设备 I/O 的相对优先级(默认 500)。
    • 速率/次数:使用 –device-read/write-bps 限制每秒字节数,使用 –device-read/write-iops 限制每秒 IOPS(如 –device-write-bps=/dev/sda:30MB)。
  • 存储与日志
    • 日志轮转:在 /etc/docker/daemon.json 中配置日志驱动与轮转(如 “max-size”: “100m”, “max-file”: “5”)。
    • 数据目录:通过 “data-root” 将 Docker 数据目录迁移至大容量磁盘(如 /home/docker)。

二 快速上手示例

  • 运行容器并限制 CPU、内存与 Swap
    • 示例:docker run -d --name app --cpus=1.5 -m 512m --memory-swap=1g nginx:alpine
  • 绑定 CPU 核心
    • 示例:docker run -d --name app2 --cpuset-cpus="0,1" nginx:alpine
  • 限制磁盘写速率
    • 示例:docker run -it --device-write-bps=/dev/sda:30MB centos:7 dd if=/dev/zero of=test bs=1M count=300 oflag=direct
  • 使用 Docker Compose 设置资源
    • 示例:
      version: "3.8"
      services:
        web:
          image: nginx:alpine
          deploy:
            resources:
              limits:
                cpus: "1"
                memory: "512M"
              reservations:
                cpus: "0.5"
                memory: "256M"
      
    说明:Compose V2/V3 中资源限制写在 deploy.resources.limits/requests 下。

三 验证与观测

  • 实时查看容器资源使用
    • 命令:docker stats(观察 CPU%、MEM USAGE/LIMIT、MEM %、NET I/O、BLOCK I/O 等)。
  • 基线压测与超限验证
    • CPU:docker run --rm progrium/stress --cpu 2(配合不同 –cpus/–cpu-shares 观察争用效果)。
    • 内存:docker run --rm -m 200M progrium/stress --vm 1 --vm-bytes 280M(接近限额可成功,超过将被 OOM 终止)。

四 存储与日志治理

  • 限制容器日志大小与保留数
    • 编辑 /etc/docker/daemon.json
      {
      
        "log-driver": "json-file",
        "log-opts": {
      
          "max-size": "100m",
          "max-file": "5"
        }
      
      }
          
      
    • 使配置生效:systemctl restart docker
  • 迁移 Docker 数据目录至大磁盘
    • 步骤:
      1. systemctl stop docker
      2. rsync -aqxP /var/lib/docker/ /home/docker/
      3. 备份原目录:mv /var/lib/docker /var/lib/docker.bak
      4. /etc/docker/daemon.json 中设置 "data-root": "/home/docker"
      5. systemctl start docker
  • 清理无用资源
    • 命令:docker system prune -a(谨慎,会删除停止容器、悬挂镜像、未使用网络等);docker volume prune(清理未使用卷)。

五 进阶与注意事项

  • cgroups 细粒度控制
    • Docker 基于 cgroups 实现资源隔离与限额;必要时可在 /sys/fs/cgroup/ 下查看或调整对应子系统参数(如 cpu.cfs_quota_us/cpu.cfs_period_us),用于更精细的 CPU 配额管理。
  • 重要规则与易错点
    • –cpu-shares 是相对权重,非绝对值;CPU 空闲时容器仍可占满空闲核。
    • 仅设置 -m 时,默认 –memory-swap=2×-m;如需允许使用 Swap,可显式设置 –memory-swap 为更大值或 -1
    • –device-read/write-bps/iops 需针对具体块设备(如 /dev/sda),且测试时建议使用 oflag=direct 以绕过页缓存,得到稳定带宽/IOPS 数据。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos上docker资源如何管理
本文地址: https://pptw.com/jishu/772093.html
PHP与CentOS兼容性问题如何解决 centos虚拟机如何设置定时关机

游客 回复需填写必要信息