ubuntu

Docker在Ubuntu中的资源限制怎么设置

小樊
43
2025-04-11 15:14:33
栏目: 智能运维

在Ubuntu中,使用Docker时可以通过docker run命令的参数来设置资源限制。主要的资源限制包括CPU、内存、磁盘I/O和网络带宽。以下是一些常用的参数:

CPU限制

内存限制

磁盘I/O限制

Docker本身不直接支持磁盘I/O限制,但可以通过cgroups(控制组)来实现。可以使用--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来实现。可以使用--net-classic参数来启用经典网络模式,并结合cgroups工具(如cgcreatecgset等)来设置网络带宽限制。

示例

以下是一个综合示例,展示了如何设置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容器的资源限制。

0
看了该问题的人还看了