在Ubuntu上可通过以下方式限制Docker容器资源:
--cpus <数值>:限制CPU核心数(如--cpus 1.5表示1.5个核心)。--cpu-shares <权重>:设置CPU资源分配权重(默认1024,数值越大优先级越高)。--cpuset-cpus <核心列表>:绑定容器到指定CPU核心(如--cpuset-cpus 0,2)。--memory <大小>(或-m):设置内存硬限制(如-m 512m)。--memory-swap <大小>:设置内存+交换空间总和(如--memory-swap 1g)。--memory-reservation <大小>:设置内存软限制(系统压力大时生效,需小于硬限制)。--device-write-bps <设备路径:速率>:限制写入速度(如--device-write-bps /dev/sda:30MB)。--blkio-weight <权重>:设置磁盘I/O权重(10-1000,默认100)。在docker-compose.yml中通过deploy.resources设置:
services:
app:
image: ubuntu
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
(limits为硬限制,reservations为软预留)。
/etc/sysctl.conf调整系统资源限制(如vm.swappiness控制交换空间使用倾向)。/sys/fs/cgroup/路径手动修改容器的cgroup参数(需深入理解cgroups机制)。--cpus)需宿主机内核支持,可通过docker info检查。docker update命令。docker stats、cAdvisor)动态调整资源分配。参考来源:[1,2,3,4,5,6,7,8,9,10]