docker run一个镜像如何指定最大可使用的内存大小、cpu大小

在 Docker 中,你可以通过 --memory--cpus 参数来指定容器的最大内存和 CPU 限制。这样可以确保容器不会超出特定的资源限制,从而避免影响主机的其他进程。

1. 限制内存(--memory

通过 --memory-m 参数,你可以指定容器的最大内存使用量。容器将在运行时根据这个限制分配内存。

示例:
复制代码
docker run -m 512m <image_name>

这将设置容器的最大内存为 512 MB

可用的单位:
  • bbytes(字节)
  • kkb(千字节)
  • mmb(兆字节)
  • ggb(吉字节)
示例(设置 2 GB 内存):
复制代码
docker run -m 2g <image_name>

2. 限制 CPU(--cpus

通过 --cpus 参数,你可以限制容器使用的 CPU 核心数。例如,如果你限制容器使用最多 2 个 CPU 核心,可以使用如下命令:

示例:
复制代码
docker run --cpus="2.0" <image_name>

这将容器的 CPU 限制设置为最多 2 个 CPU 核心。

示例(设置容器使用 1.5 个 CPU):
复制代码
docker run --cpus="1.5" <image_name>

--cpus 的值可以是一个小数,表示容器使用部分 CPU 核心。比如 1.5 表示容器可以使用 1.5 个 CPU 核心。

3. 同时设置内存和 CPU 限制

你可以同时设置内存和 CPU 限制。比如限制内存为 1 GB,CPU 核心数为 2:

示例:
复制代码
docker run -m 1g --cpus="2.0" <image_name>

4. 其他相关资源限制

  • --memory-swap :限制容器可以使用的交换空间(swap)。如果没有设置,默认值是 memory * 2。你可以设置为与内存大小相等的值,或者设置为更大的值。

    docker run -m 512m --memory-swap 1g <image_name>

  • 这将设置内存为 512 MB,交换空间为 1 GB。

  • --cpu-shares:指定容器在多个容器共享 CPU 资源时的权重。它是一个相对值,默认值为 1024。这个值不限制容器可以使用的 CPU 数量,而是决定容器的 CPU 权重。

  • 这里设置容器的 CPU 权重为 512,相对默认值 1024,这意味着该容器的 CPU 使用优先级较低。

  • --cpu-period--cpu-quota:这两个参数可以控制容器每个周期内的 CPU 时间。例如,通过配置这些参数,可以限制容器在某个时间窗口内的最大 CPU 使用。

    docker run --cpu-period=100000 --cpu-quota=50000 <image_name>

  • 这会将容器的 CPU 限制为 50% 的一个 CPU 核心(100000 微秒的时间窗口内,容器最多可以使用 50000 微秒的 CPU 时间)。

5. 综合示例

假设你想运行一个容器,并限制它使用 1 GB 内存和最多 2 个 CPU 核心,同时设置交换空间为 2 GB,可以使用以下命令:

总结:

  • --memory-m:限制容器的最大内存使用。
  • --cpus:限制容器的最大 CPU 使用数量。
  • --memory-swap:设置容器最大可用的交换空间(swap)。
  • --cpu-shares:设置容器的 CPU 权重,控制容器在 CPU 资源竞争中的优先级。
  • --cpu-period--cpu-quota:更精细地控制容器的 CPU 使用时间。

这些参数可以帮助你确保容器不会过度消耗系统资源,影响其他进程的运行。

相关推荐
sauTCc1 小时前
Docker初探
docker
宁zz1 小时前
乌班图安装jenkins
运维·jenkins
云上艺旅1 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
c无序1 小时前
【Docker-7】Docker是什么+Docker版本+Docker架构+Docker生态
docker·容器·架构
FixBug_Nick1 小时前
使用Docker安装及使用最新版本的Jenkins
docker·容器·jenkins
大丈夫立于天地间1 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信
rainFFrain2 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
ghostwritten3 小时前
Run Milvus in Kubernetes with Milvus Operator
容器·kubernetes·milvus
Zero_to_zero12344 小时前
解决docker的ubuntu系统中文乱码问题
ubuntu·docker·容器
@郭小茶4 小时前
docker-compose方式部署docker项目
运维·docker·容器