Docker容器资源限制实践:CPU、内存与IO配置


文档摘要

Docker容器资源限制实践 Docker通过Linux cgroups实现容器资源隔离和限制。 CPU限制 CPU份额 CPU绑定 Docker Compose配置 内存限制 基本内存限制 内存预留 OOM killer IO限制 磁盘IO限速 IO操作次数限制 其他限制 Pids限制 Ulimits限制 资源监控 实时监控 详细统计 资源隔离原理 Namespaces隔离 Cgroups限制 最佳实践 设置合理的资源限制 使用docker stats监控资源 配置健康检查 限制日志大小 定期审查资源使用 Docker资源限制保证容器稳定运行和资源公平分配。

Docker容器资源限制实践

Docker通过Linux cgroups实现容器资源隔离和限制。

CPU限制

CPU份额

# 设置CPU权重(默认1024) docker run --cpu-shares=512 nginx # 限制使用1个CPU核心 docker run --cpus="1.0" nginx # 限制使用0.5个CPU核心 docker run --cpus="0.5" nginx

CPU绑定

# 绑定到特定CPU核心 docker run --cpuset-cpus="0" nginx docker run --cpuset-cpus="0,2" nginx docker run --cpuset-cpus="0-3" nginx

Docker Compose配置

version: '3.8' services: web: image: nginx deploy: resources: limits: cpus: '0.5' reservations: cpus: '0.25'

内存限制

基本内存限制

# 限制内存使用 docker run -m 512m nginx # 限制内存+swap docker run -m 512m --memory-swap=1g nginx

内存预留

# 内存预留:保证最小可用内存 docker run -m 1g --memory-reservation=512m nginx

OOM killer

# 禁用OOM killer docker run -m 512m --oom-kill-disable nginx

IO限制

磁盘IO限速

# 限制读取速度 docker run --device-read-bps /dev/sda:1mb nginx # 限制写入速度 docker run --device-write-bps /dev/sda:1mb nginx

IO操作次数限制

# 限制IO操作次数 docker run --device-read-iops /dev/sda:1000 nginx docker run --device-write-iops /dev/sda:1000 nginx

其他限制

Pids限制

# 限制进程数量 docker run --pids-limit 100 nginx

Ulimits限制

# 设置文件描述符限制 docker run --ulimit nofile=1024:2048 nginx # 设置进程数量限制 docker run --ulimit nproc=100:200 nginx

资源监控

实时监控

# 实时资源使用 docker stats # 格式化输出 docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" # 只显示指定容器 docker stats container_name

详细统计

# 查看容器资源限制 docker inspect container_name # 查看内存使用 docker exec container_name cat /proc/meminfo # 查看CPU使用 docker exec container_name cat /proc/stat

资源隔离原理

Namespaces隔离

六种namespace: - pid: 进程ID - net: 网络栈 - ipc: 进程间通信 - mnt: 文件系统挂载点 - uts: 主机名和域名 - user: 用户ID

Cgroups限制

cgroup层次结构: /sys/fs/cgroup/ ├── cpu/ ├── memory/ └── blkio/

最佳实践

  1. 设置合理的资源限制
  2. 使用docker stats监控资源
  3. 配置健康检查
  4. 限制日志大小
  5. 定期审查资源使用

Docker资源限制保证容器稳定运行和资源公平分配。


发布者: 作者: 转发
评论区 (0)
U