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将立即跟进。