名称

podman-update - 更新给定容器的配置

概要

podman update [选项] 容器

podman container update [选项] 容器

描述

更新已存在容器的配置,允许设置不同的资源限制。当前支持的选项是 podman create/run 资源限制选项的子集。

选项

--blkio-weight=权重

块 IO 相对权重。权重是介于 101000 之间的值。

此选项在 cgroups V1 无根系统上不支持。

--blkio-weight-device=设备:权重

块 IO 相对设备权重。

--cpu-period=限制

为完全公平调度程序 (CFS) 设置 CPU 周期,单位为微秒。容器的 CPU 配额一旦用完,将不会被调度运行,直到当前周期结束。默认为 100000 微秒。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--cpu-quota=限制

限制 CPU 完全公平调度程序 (CFS) 配额。

限制容器的 CPU 使用率。默认情况下,容器使用完整的 CPU 资源运行。限制为微秒数。如果提供数字,则允许容器使用该 CPU 时间,直到 CPU 周期结束(可通过 --cpu-period 控制)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--cpu-rt-period=微秒

以微秒为单位限制 CPU 实时周期。

限制容器的实时 CPU 使用率。此选项告诉内核将容器的实时 CPU 使用率限制为指定的周期。

此选项仅在 cgroups V1 有根系统上支持。

--cpu-rt-runtime=微秒

以微秒为单位限制 CPU 实时运行时间。

限制容器的实时 CPU 使用率。此选项告诉内核限制给定 CPU 周期内实时任务可能消耗的时间。例如,周期为 1,000,000us,运行时间为 950,000us,这意味着此容器可以消耗 95% 的可用 CPU,并将剩余的 5% 留给正常优先级任务。

所有容器的运行时间总和不能超过分配给父 cgroup 的数量。

此选项仅在 cgroups V1 有根系统上支持。

--cpu-shares, -c=份额

CPU 份额(相对权重)。

默认情况下,所有容器获得相同比例的 CPU 周期。可以通过更改容器的 CPU 份额权重来修改此比例,该权重相对于所有正在运行的容器的总权重。默认权重为 1024

此比例仅在 CPU 密集型进程运行时适用。当一个容器中的任务处于空闲状态时,其他容器可以使用剩余的 CPU 时间。实际的 CPU 时间量取决于系统上运行的容器数量。

例如,考虑三个容器,一个容器的 cpu-share 为 1024,另外两个容器的 cpu-share 设置为 512。当三个容器中的进程都尝试使用 100% 的 CPU 时,第一个容器将获得总 CPU 时间的 50%。如果添加一个 cpu-share 为 1024 的第四个容器,则第一个容器仅获得 33% 的 CPU。剩余的容器分别获得 16.5%、16.5% 和 33% 的 CPU。

在多核系统上,CPU 时间份额分布在所有 CPU 内核上。即使容器被限制在不到 100% 的 CPU 时间,它也可以使用每个单独 CPU 内核的 100%。

例如,考虑一个具有三个以上内核的系统。如果容器 C0--cpu-shares=512 启动并运行一个进程,而另一个容器 C1--cpu-shares=1024 启动并运行两个进程,则可能导致以下 CPU 份额分配:

PID

容器

CPU

CPU 份额

100

C0

0

CPU0 的 100%

101

C1

1

CPU1 的 100%

102

C1

2

CPU2 的 100%

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--cpus=数量

CPU 数量。默认值为 0.0,表示无限制。这是 --cpu-period--cpu-quota 的简写,因此不能与 --cpu-period--cpu-quota 一起指定此选项。

在某些系统上,非 root 用户可能无法更改 CPU 限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--cpuset-cpus=数量

允许执行的 CPU。可以指定为逗号分隔列表(例如 0,1)、范围(例如 0-3)或任何组合(例如 0-3,7,11-15)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--cpuset-mems=节点

允许执行的内存节点 (MEM)(0-3、0、1)。仅在 NUMA 系统上有效。

如果系统上有四个内存节点(0-3),则使用 --cpuset-mems=0,1,然后容器中的进程仅使用来自前两个内存节点的内存。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--device-read-bps=路径:速率

限制从设备读取的速率(以每秒字节为单位)(例如 --device-read-bps=/dev/sda:1mb)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--device-read-iops=路径:速率

限制从设备读取的速率(以每秒 IO 操作为单位)(例如 --device-read-iops=/dev/sda:1000)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--device-write-bps=路径:速率

限制写入设备的速率(以每秒字节为单位)(例如 --device-write-bps=/dev/sda:1mb)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--device-write-iops=路径:速率

限制写入设备的速率(以每秒 IO 操作为单位)(例如 --device-write-iops=/dev/sda:1000)。

在某些系统上,非 root 用户可能无法更改资源限制。有关更多详细信息,请参阅 https://github.com/containers/podman/blob/main/troubleshooting.md#26-running-containers-with-resource-limits-fails-with-a-permissions-error

此选项在 cgroups V1 无根系统上不支持。

--memory, -m=数量[单位]

内存限制。单位可以是 b(字节)、k(KiB)、m(MiB)或 g(GiB)。

允许限制容器可用的内存。如果主机支持交换内存,则 -m 内存设置可以大于物理 RAM。如果指定了 0 的限制(不使用 -m),则不限制容器的内存。实际限制可能会向上舍入到操作系统页大小的倍数(该值非常大,即数百万万亿)。

此选项在 cgroups V1 无根系统上不支持。

--memory-reservation=数量[单位]

内存软限制。单位可以是 b(字节)、k(KiB)、m(MiB)或 g(GiB)。

设置内存预留后,当系统检测到内存竞争或内存不足时,容器将被迫将消耗限制在其预留范围内。因此,始终将该值设置为低于 --memory,否则硬限制将优先。默认情况下,内存预留与内存限制相同。

此选项在 cgroups V1 无根系统上不支持。

--memory-swap=数量[单位]

等于内存加交换的限制值。单位可以是 b(字节)、k(KiB)、m(MiB)或 g(GiB)。

必须与 -m--memory)标志一起使用。参数值必须大于 -m--memory)的值。默认情况下,它设置为 --memory 值的两倍。

数量 设置为 -1 以启用无限交换。

此选项在 cgroups V1 无根系统上不支持。

--memory-swappiness=数量

调整容器的内存交换行为。接受 0100 之间的整数。

此标志仅在 cgroups V1 有根系统上支持。

--pids-limit=限制

调整容器的 pids 限制。设置为 -1 使容器拥有无限的 pids。默认情况下,在支持“pids” cgroup 控制器系统上为 2048

--restart=策略

容器退出时要遵循的重启策略。如果容器通过 podman killpodman stop 命令停止,重启策略将不起作用。

有效的 策略 值为:

  • no : 退出时不重启容器

  • never : 与 no 同义;退出时不重启容器

  • on-failure[:max_retries] : 当容器以非零退出代码退出时重启容器,无限次重试,或者直到可选的 max_retries 计数达到。

  • always : 当容器退出时重启容器,无论状态如何,无限次重试。

  • unless-stopped : 与 always 相同。

Podman 提供了一个 systemd 单元文件 podman-restart.service,它在系统重启后重启容器。

在 systemd 服务中运行容器时,请使用 systemd 提供的重启功能。换句话说,不要在容器单元中使用此选项,而是在 [Service] 部分中设置 Restart= systemd 指令。请参阅 podman-systemd.unit(5) 和 systemd.service(5)。

示例

使用新的 CPU 配额和周期更新容器。

podman update --cpus=5 myCtr

使用所有可用的 cgroups v2 选项更新容器。

podman update --cpus 5 --cpuset-cpus 0 --cpu-shares 123 --cpuset-mems 0 --memory 1G --memory-swap 2G --memory-reservation 2G --blkio-weight-device /dev/zero:123 --blkio-weight 123 --device-read-bps /dev/zero:10mb --device-write-bps /dev/zero:10mb --device-read-iops /dev/zero:1000 --device-write-iops /dev/zero:1000 --pids-limit 123 ctrID

使用所有可用的 cgroups v1 选项更新容器。

podman update --cpus 5 --cpuset-cpus 0 --cpu-shares 123 --cpuset-mems 0 --memory 1G --memory-swap 2G --memory-reservation 2G --memory-swappiness 50 --pids-limit 123 ctrID

另请参阅

podman(1), podman-create(1), podman-run(1)

历史记录

2022 年 8 月,最初由 Charlie Doern 编写 cdoern@redhat.com