Docker 中如何限制CPU和内存的使用 ?

在容器化的动态世界中,Docker 已经成为构建、部署和管理容器化的关键工具应用。然而,Docker 的效率在很大程度上取决于资源管理得有多好。设置适当的内存和 CPU 限制对于优化 Docker 性能至关重要,确保每个容器在不使主机负担过重的情况下获得必要的资源。本文将深入探讨有效设置这些限制的实用策略,并提供 Dockerfile 和 Docker Compose 的示例。

Setting Limits with Docker Run

docker run 命令用于从镜像运行容器。可以在该命令中直接指定资源限制,从而提供了一种简单的方法来控制单个容器的资源使用情况。

1. Memory Limit Example

要在运行时限制容器的内存,请使用 -m--memory 参数选项

复制代码
docker run -m 500m my-image

该命令将容器的内存限制为 500 MB

2. CPU Limit Example

为了限制 CPU 的使用,可以使用 --cpus 参数选项

复制代码
docker run --cpus 2 my-image

这将容器设置为最多使用 2 个 cpu

Setting Limits in Docker Compose

Docker Compose 是一个定义和运行多容器 Docker 应用程序的工具。您可以在 docker-compose 中定义资源限制。与 Dockerfile 相比,它提供了更大的灵活性和可读性。

1. Memory and CPU Limit Example

创建一个 docker-compose.yml 文件,并定义具有资源约束的服务,如下所示

yaml 复制代码
version: "3"
services:
  my-service:
    image: my-image
    deploy:
      resources:
        limits:
          cpus: '1.5'
          memory: 500M
        reservations:
          cpus: '0.5'
          memory: 200M

my-service 被限制使用 1.5 个 cpu 和 500mb 内存。保留块指定为此服务保留的最小资源。

Best Practices

  • 了解应用程序的资源需求,以设置适当的限制。
  • 定期监控性能,根据需要调整资源限制。
  • 设置过高的限制可能导致资源利用效率低下。
  • 为关键服务设置保底资源,以确保它们获得所需的最少资源。

我的开源项目

相关推荐
java_cj2 分钟前
从kubectl源码学pprof:生产环境性能分析的实战指南
运维·云原生·容器·kubernetes
爱吃龙利鱼1 小时前
K8s 监控实战:victoria-metrics-k8s-stack 高可用部署,资源占用直降 70%,比 Prometheus 省 5 倍磁盘
docker·kubernetes·prometheus
STDD2 小时前
Kubeflow ML 流水线 K8s 部署教程:机器学习工作流编排全攻略
机器学习·容器·kubernetes
爱吃龙利鱼2 小时前
k8s1.36部署helm和storageclass
云原生·容器·kubernetes
yuezhilangniao2 小时前
2026删除K8s命名空间 卡 Terminating 的 ns
java·容器·kubernetes
又是进步的一天2 小时前
一台虚拟机学习CI流程
学习·ci/cd·云原生·容器·kubernetes·devops
IT WorryFree2 小时前
GitHub Actions 流水线注入敏感配置完整方案(Antora + Docker Compose)
docker·容器·github
我爱学习好爱好爱2 小时前
Docker Compose部署SpringBoot2+Vue3+redis项目(Rockylinux9.6):MySQL 主从复制实战
redis·mysql·docker
梦想的颜色2 小时前
Dockerfile 深度实战:从指令底层原理到生产级镜像构建的艺术
docker·容器·镜像·dockerfile·dockerfile解析
heimeiyingwang3 小时前
【架构实战】Docker容器化:从镜像到部署的完整实践
docker·容器·架构