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配置,从而实现对容器资源使用的精细控制。这对于优化容器性能、隔离不同工作负载以及满足特定的资源需求非常有用。
使用场景
- 动态资源调整:根据应用的实际需求,动态调整容器的CPU、内存等资源限制,以确保应用能够高效
开发者手册(补充内容)
podman update 命令的重要注意事项
安全性与隔离:使用
podman update
来更新容器的cgroup配置时,务必确保你的操作不会破坏容器的安全隔离性。过度或不当的资源分配可能会导致资源争用、性能下降或系统稳定性问题。不可持久性:
podman update
所做的更改是临时的,它们不会持久化到容器的配置文件中。当容器停止并重新启动时,这些更改将会丢失。如果需要持久化的配置,你需要在创建或运行容器时使用相应的选项。与创建/运行选项的兼容性:虽然
podman update
支持许多与podman create
和podman run
相同的资源限制选项,但并非所有选项都可以在更新时使用。某些选项只能在创建或运行容器时设置。因此,在尝试使用podman update
时,请务必查阅文档以确认选项的可用性。监控与诊断:在更新容器的cgroup配置后,建议监控容器的资源使用情况以及系统的整体性能。这有助于确保你的更改达到了预期的效果,并及时发现潜在的问题。
测试与验证:在对生产环境中的容器应用
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原创编写