Docker容器资源限制:CPU、内存、IO等
Docker容器资源限制:详解CPU、内存、IO等
在使用Docker部署应用程序时,了解如何限制容器对系统资源的使用至关重要。Docker提供了多种资源限制选项,可以控制容器对CPU、内存、IO等资源的使用。
Resources 结构体
Docker使用 Resources 结构体定义容器的资源限制。以下是一些常用的字段:
type Resources struct {
// 适用于所有平台
CPUShares int64 `json:'CpuShares'` // CPU份额(相对于其他容器的权重)
Memory int64 // 内存限制(字节)
NanoCPUs int64 `json:'NanoCpus'` // CPU配额,单位为10^-9 CPU
// 适用于UNIX平台
CgroupParent string // 父cgroup
BlkioWeight uint16 // 块IO权重(相对于其他容器的权重)
BlkioWeightDevice []*blkiodev.WeightDevice
BlkioDeviceReadBps []*blkiodev.ThrottleDevice
BlkioDeviceWriteBps []*blkiodev.ThrottleDevice
BlkioDeviceReadIOps []*blkiodev.ThrottleDevice
BlkioDeviceWriteIOps []*blkiodev.ThrottleDevice
CPUPeriod int64 `json:'CpuPeriod'` // CPU CFS(完全公平调度器)周期
CPUQuota int64 `json:'CpuQuota'` // CPU CFS(完全公平调度器)配额
CPURealtimePeriod int64 `json:'CpuRealtimePeriod'` // CPU实时周期
CPURealtimeRuntime int64 `json:'CpuRealtimeRuntime'` // CPU实时运行时间
CpusetCpus string // CpusetCpus 0-2, 0,1
CpusetMems string // CpusetMems 0-2, 0,1
Devices []DeviceMapping // 要映射到容器内的设备列表
DeviceCgroupRules []string // 要添加到设备cgroup的规则列表
DeviceRequests []DeviceRequest // 设备驱动程序的设备请求列表
// KernelMemory指定容器的内核内存限制(以字节为单位)。
// 已弃用:内核5.4弃用了kmem.limit_in_bytes。
KernelMemory int64 `json:',omitempty'`
KernelMemoryTCP int64 `json:',omitempty'` // 内核TCP缓冲区内存的硬限制(以字节为单位)
MemoryReservation int64 // 内存软限制(字节)
MemorySwap int64 // 总内存使用量(内存+交换); 设置`-1`以启用无限交换
MemorySwappiness *int64 // 调整容器内存交换行为
OomKillDisable *bool // 是否禁用OOM Killer
PidsLimit *int64 // 设置容器的PID限制; 设置`0`或`-1`表示无限制,或设置`null`表示不更改。
Ulimits []*units.Ulimit // 要在容器中设置的ulimits列表
// 适用于Windows
CPUCount int64 `json:'CpuCount'` // CPU数量
CPUPercent int64 `json:'CpuPercent'` // CPU百分比
IOMaximumIOps uint64 // 容器系统驱动器的最大IOps
IOMaximumBandwidth uint64 // 容器系统驱动器的最大IO(字节/秒)
}
CPUPercent 字段
CPUPercent 字段用于指定容器可以使用的CPU资源的百分比。
作用
通过设置 CPUPercent 字段,可以限制容器在CPU资源上的使用,以确保其他容器或系统进程能够获得足够的CPU资源。
示例
例如,如果将 CPUPercent 设置为 50,则容器最多可以使用系统CPU资源的 50%。
总结
了解Docker提供的资源限制选项对于优化容器性能和确保系统稳定性至关重要。通过合理配置资源限制,可以有效防止单个容器过度消耗系统资源,从而保障整个系统的稳定运行。
原文地址: https://www.cveoy.top/t/topic/fxcB 著作权归作者所有。请勿转载和采集!