跳到主要内容

创建现有容器的副本

概述

podman container clone [选项] 容器 名称 镜像

描述

podman container clone 命令会创建现有容器的副本,重新创建具有相同配置的原始容器。该命令需要三个参数:第一个参数是要克隆的容器的 ID 或名称,第二个参数可以更改克隆容器的名称(默认为 $ORIGINAL_NAME-clone),第三个参数是克隆容器要使用的新镜像。

选项

--blkio-weight

设置容器的块 IO 权重。

--blkio-weight-device

为特定设备设置块 IO 权重。

--cpu-period

设置 CPU 周期限制。如果没有指定,则使用原始容器的 CPU 周期。

--cpu-quota

设置 CPU 配额。如果没有指定,则使用原始容器的 CPU 配额。

--cpu-rt-period

设置 CPU 实时周期限制。如果没有指定,则使用原始容器的 CPU 实时周期。

--cpu-rt-runtime

设置 CPU 实时运行时间限制。

--cpu-shares

设置 CPU 共享权重。如果没有指定,则使用原始容器的 CPU 共享权重。

--cpus

为容器设置 CPU 数量,这会覆盖原始容器的 CPU 限制。如果没有指定,则使用原始容器的 Nano CPU 数量。

这是 --cpu-period--cpu-quota 的简写方式,因此只能设置 --cpus 或同时设置 --cpu-period--cpu-quota

注意:上述选项中的 "@@option" 是模板占位符,实际文档不应包含这些占位符。在最终文档中,应该直接列出选项名称和描述。

示例

克隆名为 "mycontainer" 的容器,并将克隆容器的名称更改为 "clonedcontainer",使用新的镜像 "newimage":

podman container clone mycontainer clonedcontainer newimage

注意事项

  • 克隆容器会保留原始容器的配置,但不会复制原始容器的文件系统和状态。
  • 克隆操作会创建一个新的容器实例,但原始容器不会被删除或修改。
  • 如果需要更改克隆容器的某些设置,可以使用其他 podman container 子命令或选项来进行配置。

另请参阅

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

--cpuset-cpus

如果未指定,则使用原始容器的 CPU 集。

--cpuset-mems

如果未指定,则使用原始容器的 CPU 内存节点。

--destroy

删除正在克隆的原始容器。只能与 --destroy 一起使用。

--device-read-bps

设置对特定设备的读取速率限制(字节每秒)。

--device-write-bps

设置对特定设备的写入速率限制(字节每秒)。

--force, -f

强制删除正在克隆的原始容器。只能与 --destroy 一起使用。

--memory

如果未指定内存限制,则使用原始容器的内存限制。

--memory-reservation

如果未指定,则内存预留与克隆的容器的内存限制相同。

--memory-swap

如果未指定,则使用克隆的容器来派生交换值。

--memory-swappiness

设置交换性(swappiness)的值,用于确定系统何时应开始交换出进程到磁盘。

--name

为克隆的容器设置自定义名称。如果未指定,则默认为:\<ORIGINAL_NAME>-clone

注意:上述选项中的 "@@option" 是模板占位符,实际文档不应包含这些占位符。在最终文档中,应该直接列出选项名称和描述。

使用 podman container clone 命令时,请确保您的系统支持所需的功能,并且您已经正确设置了所有必要的选项和参数。如果您在无根模式下使用 Podman,并且您的系统使用 cgroups V1,那么某些选项可能不可用。在这种情况下,您可能需要调整您的系统配置或考虑使用其他工具或方法来实现所需的功能。

--pod=name

将容器克隆到现有的 pod 中。这有助于将容器移动到现有的 pod。容器将加入 pod 的共享命名空间,并丢失与其冲突的配置。

--run

如果设置为 true,则此标志会在克隆过程完成后运行新创建的容器,这指定了分离的运行模式。

#示例

将指定的容器克隆到新的容器中:

# podman container clone d0cf1f782e2ed67e8c0050ff92df865a039186237a4df24d7acba5b1fa8cc6e7
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

将指定的容器克隆到具有新名称的容器中:

# podman container clone --name=clone d0cf1f782e2ed67e8c0050ff92df865a039186237a4df24d7acba5b1fa8cc6e7
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

替换指定的容器,将选定的资源限制放入新的容器中,并删除原始容器:

# podman container clone --destroy --cpus=5 d0cf1f782e2ed67e8c0050ff92df865a039186237a4df24d7acba5b1fa8cc6e7
6b2c73ff8a1982828c9ae2092954bcd59836a131960f7e05221af9df5939c584

克隆指定的容器,给予新名称,然后将原始容器的镜像替换为指定的镜像名称:

# podman container clone 2d4d4fca7219b4437e0d74fcdc272c4f031426a6eacd207372691207079551de new_name fedora
Resolved "fedora" as an alias (/etc/containers/registries.conf.d/shortnames.conf)
Trying to pull registry.fedoraproject.org/fedora:latest...
Getting image source signatures
Copying blob c6183d119aa8 done
Copying config e417cd49a8 done
Writing manifest to image destination
Storing signatures
5a9b7851013d326aa4ac4565726765901b3ecc01fcbc0f237bc7fd95588a24f9

参见

podman-create(1), cgroups(7)

历史

2022 年 1 月,最初由Charlie Doern编写