跳到主要内容

podman pod clone 命令介绍

podman pod clone 命令用于克隆一个已存在的 pod,创建一个新的 pod。Podman 是一个开源的容器管理工具,它是 Podman 项目的核心组件,用于管理容器、pods 和镜像。与 Docker 类似,但 Podman 不需要守护进程运行,并且与容器运行时兼容。

命令格式

podman pod clone [OPTIONS] POD_NAME [NEW_POD_NAME]

参数说明

  • POD_NAME:要克隆的已存在 pod 的名称或 ID。
  • NEW_POD_NAME:可选参数,指定新 pod 的名称。如果不提供,Podman 会为新 pod 生成一个随机的名称。

选项(OPTIONS)

  • --cpus FLOAT:设置新 pod 的 CPU 配额。
  • --destroy:克隆完成后删除原 pod。
  • --name NAME:为新 pod 设置名称。
  • --quiet, -q:静默模式,只输出新 pod 的 ID。
  • --share NAME[:VALUE]:共享卷或网络到新 pod。

示例

podman pod clone 命令

将指定的pod克隆为一个新的pod。

podman pod clone pod-name
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

将指定的pod克隆为一个具有新名称的新pod。

podman pod clone pod-name --name=cloned-pod
d0cf1f782e2ed67e8c0050ff92df865a039186237a4df24d7acba5b1fa8cc6e7
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

克隆并删除指定的pod为一个新pod,同时修改其CPU数量。

podman pod clone --destroy --cpus=5 d0cf1
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

将指定的pod克隆为一个具有新名称的新pod。

podman pod clone 2d4d4fca7219b4437e0d74fcdc272c4f031426a6eacd207372691207079551de new_name

5a9b7851013d326aa4ac4565726765901b3ecc01fcbc0f237bc7fd95588a24f9

克隆 pod 到新的 pod

podman pod clone pod-name new-pod-name

这将克隆名为 pod-name 的 pod,并创建一个名为 new-pod-name 的新 pod。

克隆 pod 并设置 CPU 配额

podman pod clone --cpus 2 pod-name

这将克隆 pod-name pod 并为新 pod 设置 CPU 配额为 2。

克隆并删除原 pod

podman pod clone --destroy pod-name

这将克隆 pod-name pod,并在克隆完成后删除原 pod。

静默模式克隆 pod

podman pod clone -q pod-name

这将克隆 pod-name pod,并只输出新 pod 的 ID,不显示其他任何信息。

注意事项

  • 当你克隆一个 pod 时,新 pod 会包含原 pod 的配置信息,但容器本身并不会被复制,只是容器的配置会被应用到新 pod 中。
  • 如果新 pod 中的容器需要访问原 pod 中的数据卷或网络,可以使用 --share 选项进行共享。
选项描述
--blkio-weight设置块IO权重。
--blkio-weight-device设置特定设备的块IO权重。
--cgroup-parent设置cgroup的父级。
--cpu-shares设置CPU共享权重。
--cpus设置pod的CPU数量,覆盖原始pod的CPU限制。如果未指定,则使用原始pod的Nano CPU。
--cpuset-cpus设置CPU集合。如果未指定,则使用原始pod的CPUset。
--cpuset-mems设置内存节点集合。
--destroy销毁原始pod。
--device添加设备到pod。注意:pod通过存储用户传递的初始配置并在每个添加到pod的容器上重新创建设备来实现设备功能。
--device-read-bps设置设备的读取带宽限制。
--device-write-bps设置设备的写入带宽限制。
--gidmap.pod设置GID映射。
--gpus分配GPU。
--help, -h显示使用说明。
--hostname.pod设置pod的主机名。
--infra-command设置infra容器的命令。
--infra-conmon-pidfile设置infra容器的conmon进程的PID文件路径。
--infra-name设置infra容器的名称。
--label设置pod的标签。
--label-file从文件中读取pod的标签。
--memory设置pod的内存限制。
--memory-swap设置pod的交换内存和内存限制的总和。
--memory-swap详解允许容器使用交换内存和内存的总和。这可以是一个大于或等于内存限制的值。当交换空间耗尽时,Podman会尝试回收内存,这可能导致容器被杀死。如果未设置或设置为0,则容器将无法使用交换内存。

请注意,--memory-swap 选项允许容器使用交换内存和内存的总和。这可以帮助在内存资源紧张的情况下,容器能够继续运行,尽管性能可能会受到影响。然而,当交换空间耗尽时,Podman可能会尝试回收内存,这可能导致某些容器被杀死。因此,在设置这个选项时需要谨慎考虑。如果未设置或设置为0,则容器将无法使用交换内存。

此外,上述表格中只列出了--memory-swap选项的详细描述,其他选项的详细描述可以根据具体需求进一步补充和完善。在使用podman pod clone命令时,可以根据实际情况选择合适的选项来满足需求。

podman pod clone命令的详细的说明

选项详细说明
--name, -n设置克隆后pod的自定义名称。如果不指定此选项,pod的名称将默认使用原始pod的名称加上"-clone"后缀。这个选项允许用户为克隆的pod指定一个更具描述性或个性化的名称。
--pid.pod设置pod的PID命名空间。PID命名空间允许容器拥有自己的进程ID空间,使得容器内的进程ID与主机或其他容器的进程ID不冲突。这有助于隔离容器和主机或其他容器之间的进程。
--restart设置pod中所有容器的默认重启策略。重启策略决定了当容器退出时是否应该重新启动容器。可能的选项包括"no"(不重启)、"on-failure"(仅在容器以非零状态退出时重启)和"always"(无论容器退出状态如何都重启)。这个选项可以帮助管理容器的稳定性和可用性。
--security-opt设置容器的安全选项。这些选项可以提供额外的安全特性或限制容器的某些行为。例如,可以设置容器的标签以控制访问权限,或者设置apparmor配置文件来限制容器的系统调用。这个选项提供了更细粒度的安全控制。
--shm-size设置共享内存的大小。共享内存是一种允许多个进程之间共享数据的机制。通过指定共享内存的大小,可以控制容器可以使用的共享内存量,以避免资源耗尽或滥用。
--shm-size-systemd通过systemd服务文件设置共享内存的大小。这个选项允许用户通过systemd的配置文件来定义共享内存的大小,适用于在systemd环境下运行的容器。
--start如果设置为true,则在克隆过程完成后立即启动新创建的pod。默认情况下,克隆操作只是创建了一个新的pod,并不会自动启动它。使用这个选项可以方便地在克隆后立即开始使用pod。
--subgidname, --subuidname设置子GID和子UID映射文件。这些文件定义了容器内用户ID和组ID到主机上用户ID和组ID的映射关系。通过指定这些文件,可以控制容器内用户的访问权限和资源限制。
--sysctl设置容器的系统控制参数。这些参数允许用户调整容器的内核参数,例如网络设置、资源限制等。这个选项提供了更高级的系统配置能力。
--uidmap.pod设置UID映射。UID映射定义了容器内用户ID到主机上用户ID的映射关系。这有助于隔离容器和主机之间的用户空间,并允许容器使用特定的用户ID运行。
--userns.pod设置用户命名空间模式。用户命名空间是一种隔离用户ID的机制,使得容器内的用户ID与主机上的用户ID不同。这个选项允许用户配置容器的用户命名空间设置,以满足特定的安全或隔离需求。
--uts.pod设置UTS命名空间。UTS命名空间允许容器拥有自己的主机名和域名。这有助于在容器内部创建独立的网络环境,并使得容器在网络通信中表现得像是一个独立的系统。
--volume添加卷到pod。卷是一种在容器之间共享数据的机制。通过指定卷的来源、目标路径和访问模式,可以将主机上的目录或文件挂载到容器内,或者共享其他容器或pod的卷。这个选项提供了数据持久化和共享的能力。
--volumes-from从另一个容器或pod挂载卷。这个选项允许用户将一个容器或pod的卷挂载到另一个容器或pod中,从而实现数据的共享和复用。这对于需要在多个容器之间共享数据的场景非常有用。

这些选项提供了丰富的配置能力,使得用户可以根据具体需求定制克隆的pod及其容器的行为。在使用这些选项时,建议参考Podman的官方文档以获取更详细的信息和示例。

另请参阅

  • podman pod create:创建一个新的 pod。
  • podman pod list:列出所有 pods。
  • podman pod inspect:显示 pod 的详细信息。
  • podman pod rm:删除一个或多个 pods。

兼容性

podman pod clone 命令与 Podman 项目的版本有关,不同版本可能具有不同的选项和行为。请确保查阅你所使用的 Podman 版本的官方文档以获取最准确的信息。

总结

podman pod clone 命令是一个方便的工具,用于快速创建与原 pod 配置相同的新 pod。通过该命令,开发者可以轻松地扩展和管理容器化应用的工作负载。

历史

2022年5月,最初由 Charlie Doern 编写。

脚注

Podman项目致力于包容性,这是开源的核心价值。在这里使用的“master”和“slave”挂载传播术语是有问题的,具有分裂性,需要改变。然而,这些术语目前在Linux内核中使用,必须按原样使用。当内核维护者纠正这种用法时,Podman将立即跟进。