summaryrefslogtreecommitdiff
path: root/libpod/define
diff options
context:
space:
mode:
authorRadostin Stoyanov <radostin@redhat.com>2022-04-12 18:46:32 +0100
committerRadostin Stoyanov <radostin@redhat.com>2022-04-20 18:55:39 +0100
commit756ecd5400c7a8806890753d4f9fbb2b39eba192 (patch)
tree3c295209d2c33beaea23e7fd9b083a5a4bfc190a /libpod/define
parentfca3397dc985047e414894d6cb1623272e20eb40 (diff)
downloadpodman-756ecd5400c7a8806890753d4f9fbb2b39eba192.tar.gz
podman-756ecd5400c7a8806890753d4f9fbb2b39eba192.tar.bz2
podman-756ecd5400c7a8806890753d4f9fbb2b39eba192.zip
Add support for checkpoint image
This is an enhancement proposal for the checkpoint / restore feature of Podman that enables container migration across multiple systems with standard image distribution infrastructure. A new option `--create-image <image>` has been added to the `podman container checkpoint` command. This option tells Podman to create a container image. This is a standard image with a single layer, tar archive, that that contains all checkpoint files. This is similar to the current approach with checkpoint `--export`/`--import`. This image can be pushed to a container registry and pulled on a different system. It can also be exported locally with `podman image save` and inspected with `podman inspect`. Inspecting the image would display additional information about the host and the versions of Podman, criu, crun/runc, kernel, etc. `podman container restore` has also been extended to support image name or ID as input. Suggested-by: Adrian Reber <areber@redhat.com> Signed-off-by: Radostin Stoyanov <radostin@redhat.com>
Diffstat (limited to 'libpod/define')
-rw-r--r--libpod/define/annotations.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/libpod/define/annotations.go b/libpod/define/annotations.go
index 3964a1237..a83fbff0b 100644
--- a/libpod/define/annotations.go
+++ b/libpod/define/annotations.go
@@ -65,6 +65,76 @@ const (
// InspectResponseFalse is a boolean False response for an inspect
// annotation.
InspectResponseFalse = "FALSE"
+
+ // CheckpointAnnotationName is used by Container Checkpoint when creating a
+ // checkpoint image to specify the original human-readable name for the
+ // container.
+ CheckpointAnnotationName = "io.podman.annotations.checkpoint.name"
+
+ // CheckpointAnnotationRawImageName is used by Container Checkpoint when
+ // creating a checkpoint image to specify the original unprocessed name of
+ // the image used to create the container (as specified by the user).
+ CheckpointAnnotationRawImageName = "io.podman.annotations.checkpoint.rawImageName"
+
+ // CheckpointAnnotationRootfsImageID is used by Container Checkpoint when
+ // creating a checkpoint image to specify the original ID of the image used
+ // to create the container.
+ CheckpointAnnotationRootfsImageID = "io.podman.annotations.checkpoint.rootfsImageID"
+
+ // CheckpointAnnotationRootfsImageName is used by Container Checkpoint when
+ // creating a checkpoint image to specify the original image name used to
+ // create the container.
+ CheckpointAnnotationRootfsImageName = "io.podman.annotations.checkpoint.rootfsImageName"
+
+ // CheckpointAnnotationPodmanVersion is used by Container Checkpoint when
+ // creating a checkpoint image to specify the version of Podman used on the
+ // host where the checkpoint was created.
+ CheckpointAnnotationPodmanVersion = "io.podman.annotations.checkpoint.podman.version"
+
+ // CheckpointAnnotationCriuVersion is used by Container Checkpoint when
+ // creating a checkpoint image to specify the version of CRIU used on the
+ // host where the checkpoint was created.
+ CheckpointAnnotationCriuVersion = "io.podman.annotations.checkpoint.criu.version"
+
+ // CheckpointAnnotationRuntimeName is used by Container Checkpoint when
+ // creating a checkpoint image to specify the runtime used on the host where
+ // the checkpoint was created.
+ CheckpointAnnotationRuntimeName = "io.podman.annotations.checkpoint.runtime.name"
+
+ // CheckpointAnnotationRuntimeVersion is used by Container Checkpoint when
+ // creating a checkpoint image to specify the version of runtime used on the
+ // host where the checkpoint was created.
+ CheckpointAnnotationRuntimeVersion = "io.podman.annotations.checkpoint.runtime.version"
+
+ // CheckpointAnnotationConmonVersion is used by Container Checkpoint when
+ // creating a checkpoint image to specify the version of conmon used on
+ // the host where the checkpoint was created.
+ CheckpointAnnotationConmonVersion = "io.podman.annotations.checkpoint.conmon.version"
+
+ // CheckpointAnnotationHostArch is used by Container Checkpoint when
+ // creating a checkpoint image to specify the CPU architecture of the host
+ // on which the checkpoint was created.
+ CheckpointAnnotationHostArch = "io.podman.annotations.checkpoint.host.arch"
+
+ // CheckpointAnnotationHostKernel is used by Container Checkpoint when
+ // creating a checkpoint image to specify the kernel version used by the
+ // host where the checkpoint was created.
+ CheckpointAnnotationHostKernel = "io.podman.annotations.checkpoint.host.kernel"
+
+ // CheckpointAnnotationCgroupVersion is used by Container Checkpoint when
+ // creating a checkpoint image to specify the cgroup version used by the
+ // host where the checkpoint was created.
+ CheckpointAnnotationCgroupVersion = "io.podman.annotations.checkpoint.cgroups.version"
+
+ // CheckpointAnnotationDistributionVersion is used by Container Checkpoint
+ // when creating a checkpoint image to specify the version of host
+ // distribution on which the checkpoint was created.
+ CheckpointAnnotationDistributionVersion = "io.podman.annotations.checkpoint.distribution.version"
+
+ // CheckpointAnnotationDistributionName is used by Container Checkpoint when
+ // creating a checkpoint image to specify the name of host distribution on
+ // which the checkpoint was created.
+ CheckpointAnnotationDistributionName = "io.podman.annotations.checkpoint.distribution.name"
)
// IsReservedAnnotation returns true if the specified value corresponds to an