在CentOS中,使用Docker時可以通過docker run
命令的參數來設置資源限制。以下是一些常用的資源限制參數:
-c
或 --cpus
: 指定容器可以使用的CPU核心數。docker run -it --cpus=2 ubuntu:latest /bin/bash
-m
或 --memory
: 指定容器可以使用的最大內存量。docker run -it --memory=512m ubuntu:latest /bin/bash
--memory-swap
: 指定容器可以使用的最大內存和交換空間的總量。docker run -it --memory=512m --memory-swap=1g ubuntu:latest /bin/bash
Docker本身不直接支持磁盤I/O限制,但可以通過cgroups(控制組)來實現??梢允褂?code>--device-read-bps和--device-write-bps
來限制設備的讀寫速度。
docker run -it --device-read-bps=/dev/sda:1mb --device-write-bps=/dev/sda:1mb ubuntu:latest /bin/bash
Docker 1.13及以上版本支持網絡帶寬限制,可以使用--network
參數結合--device-read-bps
和--device-write-bps
來限制網絡帶寬。
docker run -it --network=host --device-read-bps=eth0:1mb --device-write-bps=eth0:1mb ubuntu:latest /bin/bash
可以通過修改cgroups配置文件來設置更細粒度的資源限制。首先需要確保Docker使用cgroups v2(默認情況下是cgroups v1)。
編輯/etc/docker/daemon.json
文件,添加以下內容:
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
然后重啟Docker服務:
sudo systemctl restart docker
之后,可以通過修改/sys/fs/cgroup/cpu/docker/<container_id>/cpu.shares
、/sys/fs/cgroup/memory/docker/<container_id>/memory.limit_in_bytes
等文件來設置具體的資源限制。
通過以上方法,可以在CentOS中為Docker容器設置資源限制,以確保系統的穩定性和資源的合理分配。