在Debian系统下,使用Docker时可以通过多种方式对容器的资源进行限制,包括CPU、内存、磁盘I/O和网络带宽等。以下是一些常用的方法:
docker run
命令的参数--cpus
: 限制容器可以使用的CPU核心数。docker run --cpus=2 ubuntu:latest
--memory
: 限制容器可以使用的最大内存量。docker run --memory=512m ubuntu:latest
--memory-swap
: 限制容器可以使用的总内存(包括交换空间)。docker run --memory-swap=1g ubuntu:latest
--blkio-weight
: 设置容器的块I/O权重。docker run --blkio-weight=500 ubuntu:latest
--network
: 使用自定义网络,并通过 --device-read-bps
和 --device-write-bps
限制设备的读写速度。docker run --network=my_network --device-read-bps=/dev/sda:1mb --device-write-bps=/dev/sda:1mb ubuntu:latest
docker-compose
文件如果你使用 docker-compose
来管理容器,可以在 docker-compose.yml
文件中设置资源限制。
version: '3'
services:
myservice:
image: ubuntu:latest
deploy:
resources:
reservations:
cpus: '0.5'
memory: 256M
limits:
cpus: '1'
memory: 512M
version: '3'
services:
myservice:
image: ubuntu:latest
deploy:
resources:
reservations:
cpus: '0.5'
memory: 256M
limits:
cpus: '1'
memory: 512M
blkio:
weight: 500
version: '3'
services:
myservice:
image: ubuntu:latest
networks:
my_network:
aliases:
- myservice
deploy:
resources:
reservations:
cpus: '0.5'
memory: 256M
limits:
cpus: '1'
memory: 512M
blkio:
weight: 500
cgroups
直接管理Docker底层使用 cgroups
来管理资源限制。你可以直接操作 cgroups
文件系统来设置更细粒度的控制。
cgroups
配置cat /sys/fs/cgroup/cpu/docker/<container_id>/cpu.shares
cat /sys/fs/cgroup/memory/docker/<container_id>/memory.limit_in_bytes
cgroups
配置echo 512M > /sys/fs/cgroup/memory/docker/<container_id>/memory.limit_in_bytes
echo 512 > /sys/fs/cgroup/cpu/docker/<container_id>/cpu.shares
docker-compose
的 deploy
部分需要 Docker Swarm 模式。通过以上方法,你可以在Debian系统下有效地对Docker容器进行资源限制。