在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]