跳到主要内容

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

概述

podman update [选项] 容器

podman container update [选项] 容器

描述

更新已存在的容器的cgroup配置。当前支持的选项是podman create/run资源限制选项的子集。这些新选项是非持久的,只在当前容器的执行期间有效;配置在容器的下一次运行时会被保留。 这意味着这个命令只能在已经运行的容器上执行,并且所做的更改在容器下次停止并重新启动时会被清除,这是为了确保容器配置的不变性。 该命令接受一个参数,即容器的名称或ID,以及用于修改cgroup的资源标志。

选项

下面列出了podman update命令支持的所有选项,并为每个选项提供了详细的说明。

选项描述
--blkio-weight设置块设备I/O的权重。权重决定了在多个容器之间进行块I/O带宽分配时的优先级。
--blkio-weight-device为特定的块设备设置I/O权重。格式为“设备路径:权重”。
--cpu-period设置CPU周期的时间长度,单位为微秒。用于与--cpu-quota一起限制CPU的使用。
--cpu-quota设置CPU配额,即容器在一个CPU周期中可以使用的微秒数。
--cpu-rt-period设置实时CPU调度的周期长度,单位为微秒。用于限制实时任务的CPU使用时间。
--cpu-rt-runtime设置实时CPU调度的运行时间长度,单位为微秒。
--cpu-shares设置CPU权重,用于在多个容器之间分配CPU时间。
--cpus.container设置容器可以使用的CPU核心数。
--cpuset-cpus设置容器可以使用的CPU集合。
--cpuset-mems设置容器可以使用的内存节点集合。
--device-read-bps为特定的设备设置读取带宽限制,单位为字节/秒。格式为“设备路径:带宽”。
--device-read-iops为特定的设备设置读取I/O操作限制,单位为操作/秒。格式为“设备路径:I/O操作数”。
--device-write-bps为特定的设备设置写入带宽限制,单位为字节/秒。格式为“设备路径:带宽”。
--device-write-iops为特定的设备设置写入I/O操作限制,单位为操作/秒。格式为“设备路径:I/O操作数”。
--memory设置容器可以使用的内存大小。
--memory-reservation设置容器内存预留大小,确保容器启动时获得的最小内存量。
--memory-swap设置容器可以使用的总内存(包括内存和交换分区)大小。
--memory-swappiness设置容器的交换倾向性,取值范围为0到100。较高的值意味着容器更倾向于使用交换分区。
--pids-limit设置容器可以创建的进程数限制。

示例

更新一个容器的CPU配额和周期。

podman update --cpus=5 myCtr

使用cgroup 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

使用cgroup 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 update 命令详解

podman update 命令允许开发者在容器运行时动态地更新其cgroup配置,从而实现对容器资源使用的精细控制。这对于优化容器性能、隔离不同工作负载以及满足特定的资源需求非常有用。

使用场景

  1. 动态资源调整:根据应用的实际需求,动态调整容器的CPU、内存等资源限制,以确保应用能够高效

开发者手册(补充内容)

podman update 命令的重要注意事项

  1. 安全性与隔离:使用podman update来更新容器的cgroup配置时,务必确保你的操作不会破坏容器的安全隔离性。过度或不当的资源分配可能会导致资源争用、性能下降或系统稳定性问题。

  2. 不可持久性podman update所做的更改是临时的,它们不会持久化到容器的配置文件中。当容器停止并重新启动时,这些更改将会丢失。如果需要持久化的配置,你需要在创建或运行容器时使用相应的选项。

  3. 与创建/运行选项的兼容性:虽然podman update支持许多与podman createpodman run相同的资源限制选项,但并非所有选项都可以在更新时使用。某些选项只能在创建或运行容器时设置。因此,在尝试使用podman update时,请务必查阅文档以确认选项的可用性。

  4. 监控与诊断:在更新容器的cgroup配置后,建议监控容器的资源使用情况以及系统的整体性能。这有助于确保你的更改达到了预期的效果,并及时发现潜在的问题。

  5. 测试与验证:在对生产环境中的容器应用podman update之前,建议在测试环境中进行充分的测试和验证。这有助于确保你的更改不会导致不可预见的问题或中断。

命令行选项的详细说明

--blkio-weight

设置块设备I/O的权重。权重决定了在多个容器之间进行块I/O带宽分配时的优先级。较高的权重值意味着容器将获得更多的I/O带宽。

--blkio-weight-device

为特定的块设备设置I/O权重。格式为“设备路径:权重”。这允许你为特定的存储设备(如硬盘或SSD)设置不同的I/O优先级。

--cpu-period 和 --cpu-quota

这两个选项一起用于限制容器在一个CPU周期中可以使用的CPU时间。--cpu-period设置CPU周期的长度(以微秒为单位),而--cpu-quota设置容器在该周期内可以使用的CPU时间(以微秒为单位)。

--cpuset-cpus 和 --cpuset-mems

这两个选项允许你指定容器可以使用的CPU和内存节点集合。这对于在具有多个CPU或NUMA架构的系统上实现更精细的资源管理非常有用。

--memory, --memory-reservation, --memory-swap, --memory-swappiness

这些选项用于设置容器的内存限制和交换行为。它们可以帮助你控制容器对系统内存的使用,从而避免资源耗尽或性能下降。

--pids-limit

此选项设置容器可以创建的进程数限制。这有助于防止容器创建过多的进程,从而耗尽系统资源。

通过了解和使用这些选项,开发者可以更灵活地管理容器的资源使用,确保它们以高效和稳定的方式运行。

另请参阅

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

历史

2022年8月,由Charlie Doern原创编写