温馨提示×

Ubuntu Docker资源限制如何配置

小樊
57
2025-07-01 12:33:35
栏目: 智能运维

在Ubuntu中配置Docker容器的资源限制可以通过以下几种方式进行:

使用 docker run 命令的参数

  • 限制CPU:使用 --cpus-c 参数来限制容器可以使用的CPU核心数。例如,--cpus=1.5 表示容器最多可以使用1.5个CPU核心。
  • 限制内存:使用 --memory-m 参数来限制容器可以使用的最大内存量。例如,--memory="512m" 表示容器最多可以使用512MB的内存。
  • 同时限制CPU和内存:可以同时使用 --cpus--memory 参数来设置CPU和内存的限制。例如,--cpus=1.5 --memory="512m"

使用 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 

在这个例子中,myservice 服务被限制最多使用1个CPU核心和512MB内存。

使用 systemd 服务文件

如果你通过 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 

使用 cgroups

Docker 底层使用 Linux 的 cgroups 来管理容器的资源限制。你可以直接操作 cgroups 来更细粒度地控制资源分配。

  1. 找到容器的 cgroup 路径:
    docker inspect --format='{{ .HostConfig.CgroupParent }}' <container_id> 
  2. 进入该路径并编辑相应的 cgroup 文件,例如:
    cd /sys/fs/cgroup/cpu/docker/<container_id> echo 200000 > cpu.cfs_quota_us echo 100000 > cpu.cfs_period_us 

注意事项

  • --cpus 参数限制的是CPU核心数,而不是CPU时间。
  • --memory 参数限制的是容器的总内存使用量,包括堆栈、堆和其他内存映射文件。
  • 资源限制需要在容器启动前设置,一旦容器启动,这些限制就很难更改。

通过以上方法,你可以在Ubuntu中有效地设置Docker容器的资源限制,确保系统的稳定性和性能。

0