在Ubuntu中,使用Docker時可以通過docker run命令的參數來設置資源限制。主要的資源限制包括CPU、內存、磁盤I/O和網絡帶寬。以下是一些常用的參數:
--cpus 或 -c: 限制容器可以使用的CPU核心數。docker run --cpus=2 ubuntu:latest
--memory 或 -m: 限制容器可以使用的最大內存量。docker run --memory=512m ubuntu:latest
--memory-swap: 限制容器可以使用的總內存(包括交換空間)。docker run --memory-swap=1g ubuntu:latest
Docker本身不直接支持磁盤I/O限制,但可以通過cgroups(控制組)來實現??梢允褂?code>--device-read-bps和--device-write-bps參數來限制設備的讀寫速度。
docker run --device-read-bps=/dev/sda:1mb ubuntu:latest
docker run --device-write-bps=/dev/sda:1mb ubuntu:latest
Docker本身也不直接支持網絡帶寬限制,但可以通過cgroups來實現??梢允褂?code>--net-classic參數來啟用經典網絡模式,并結合cgroups工具(如cgcreate、cgset等)來設置網絡帶寬限制。
以下是一個綜合示例,展示了如何設置CPU、內存和磁盤I/O限制:
docker run --cpus=2 \
--memory=512m \
--memory-swap=1g \
--device-read-bps=/dev/sda:1mb \
--device-write-bps=/dev/sda:1mb \
ubuntu:latest
如果你希望這些資源限制在容器重啟后仍然有效,可以將這些參數添加到Docker的配置文件中(通常是/etc/docker/daemon.json),然后重啟Docker服務:
{
"default-ulimits": {
"memlock": {
"Name": "memlock",
"Hard": -1,
"Soft": -1
}
},
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
然后重啟Docker服務:
sudo systemctl restart docker
通過這些方法,你可以在Ubuntu中靈活地設置Docker容器的資源限制。