在Ubuntu中设置Docker容器的资源限制,可以通过以下几种方式实现:
docker run
命令的参数你可以在启动容器时使用 --cpus
和 --memory
参数来限制CPU和内存的使用。
限制CPU:
docker run --cpus=2 ubuntu:latest
这将限制容器最多使用2个CPU核心。
限制内存:
docker run --memory="512m" ubuntu:latest
这将限制容器最多使用512MB的内存。
同时限制CPU和内存:
docker run --cpus=2 --memory="512m" ubuntu:latest
如果你使用Docker Compose来管理容器,可以在 docker-compose.yml
文件中设置资源限制。
version: '3'
services:
myservice:
image: ubuntu:latest
deploy:
resources:
reservations:
cpus: '0.5'
memory: 256M
limits:
cpus: '2'
memory: 512M
如果你通过 systemd 管理 Docker 容器,可以在服务文件中设置资源限制。
[Service]
ExecStart=/usr/bin/docker start -a mycontainer
ExecStop=/usr/bin/docker stop -t 2 mycontainer
Restart=on-failure
[Install]
WantedBy=multi-user.target
[Service]
CPUQuota=50%
MemoryLimit=512M
Docker 使用 cgroups 来管理容器的资源限制。你可以直接操作 cgroups 来更细粒度地控制资源。
首先,找到容器的 cgroup 路径:
docker inspect --format='{{ .HostConfig.CgroupParent }}' <container_id>
然后,进入该路径并编辑相应的 cgroup 文件:
cd /sys/fs/cgroup/cpu/docker/<container_id>
echo 200000 > cpu.cfs_quota_us
echo 100000 > cpu.cfs_period_us
cd /sys/fs/cgroup/memory/docker/<container_id>
echo 536870912 > memory.limit_in_bytes
--cpus
参数限制的是CPU核心数,而不是CPU时间。--memory
参数限制的是容器的总内存使用量,包括堆栈、堆和其他内存映射文件。通过以上方法,你可以在Ubuntu中有效地设置Docker容器的资源限制。