ubuntu

Ubuntu Docker资源限制怎么设置

小樊
45
2025-10-24 22:26:26
栏目: 智能运维

Ubuntu下Docker资源限制设置方法

在Ubuntu系统中,可以通过多种方式为Docker容器设置资源限制(包括CPU、内存、磁盘I/O等),确保容器不会过度消耗宿主机资源,保障系统稳定性。以下是具体设置方式:

1. 通过docker run命令直接设置(临时生效)

这是最常用的临时限制方式,适用于单次启动容器的场景。

示例命令:

docker run -it --cpus=2 -m 512m --memory-swap=1g --device-read-bps=/dev/sda:1mb ubuntu:latest /bin/bash

2. 使用Docker Compose配置(适用于多容器管理)

通过docker-compose.yml文件定义资源限制,便于批量管理和版本控制。
services模块下添加deploy.resources字段,支持reservations(最低保障)和limits(最高限制):

version: '3'
services:
  web:
    image: nginx
    deploy:
      resources:
        reservations:
          cpus: '0.5'       # 最低保障0.5个CPU核心
          memory: 256M      # 最低保障256MB内存
        limits:
          cpus: '1'         # 最高使用1个CPU核心
          memory: 512M      # 最高使用512MB内存

启动服务时使用docker-compose up -d命令,资源限制将自动生效。

3. 修改Docker Daemon配置(默认限制)

若需要为所有容器设置默认资源限制,可修改Docker守护进程的配置文件/etc/docker/daemon.json(若文件不存在则新建):

{
  "exec-opts": ["native.cgroupdriver=systemd"],  // 推荐使用systemd作为cgroup驱动
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 65536,
      "Soft": 65536
    },
    "memlock": {
      "Name": "memlock",
      "Hard": -1,
      "Soft": -1
    }
  },
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

修改后重启Docker服务使配置生效:

sudo systemctl restart docker

4. 通过cgroups直接操作(高级精细控制)

Docker底层依赖Linux cgroups实现资源限制,可通过直接操作cgroups文件系统实现更细粒度的调整(如修改已运行容器的限制)。

注意事项

0
看了该问题的人还看了