在Ubuntu上分配Docker资源可以通过以下几种方式进行:
--cpu-shares
或-c
参数设置容器使用CPU资源的相对权重。权重越高,容器获得的CPU时间越多。例如,设置--cpu-shares 512
表示容器获得的CPU权重为512。--cpus
参数限制容器可以使用的CPU核数。例如,--cpus "1.5"
表示容器可以使用1.5个CPU核心。--cpuset-cpus
参数指定容器只能使用哪些CPU核心。例如,--cpuset-cpus="0,1"
表示容器只能使用CPU核心0和1。-m
或--memory
参数限制容器可以使用的内存量。例如,-m 512m
表示容器最多可以使用512MB的内存。--memory-swap
参数设置容器可以使用的交换空间大小。交换空间的大小依赖于-m
参数设置的内存大小。--device-write-bps
参数限制容器对指定设备的写入速度。例如,--device-write-bps /dev/sda:2mb
限制设备/dev/sda
的写入速度为2MB/s。在使用docker-compose
时,可以在docker-compose.yml
文件中设置资源限制。例如:
version: '3'
services:
web:
image: nginx
deploy:
resources:
limits:
cpus: '0.50'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
在这个例子中,web
服务的CPU使用量被限制为50%,内存使用量为512MB,并且保留了25%的CPU和内存资源。
如果通过systemd
管理Docker容器,可以在服务文件中设置资源限制。例如:
[Service]
ExecStart=/usr/bin/docker start -a mycontainer
ExecStop=/usr/bin/docker stop -t 2 mycontainer
Restart=on-failure
CPUQuota=50%
MemoryLimit=512M
通过上述方法,可以有效地限制和分配Ubuntu Docker容器的资源,确保系统的稳定性和性能。