podman/libpod
Adrian Reber 0028578b43
Added support to migrate containers
This commit adds an option to the checkpoint command to export a
checkpoint into a tar.gz file as well as importing a checkpoint tar.gz
file during restore. With all checkpoint artifacts in one file it is
possible to easily transfer a checkpoint and thus enabling container
migration in Podman. With the following steps it is possible to migrate
a running container from one system (source) to another (destination).

 Source system:
  * podman container checkpoint -l -e /tmp/checkpoint.tar.gz
  * scp /tmp/checkpoint.tar.gz destination:/tmp

 Destination system:
  * podman pull 'container-image-as-on-source-system'
  * podman container restore -i /tmp/checkpoint.tar.gz

The exported tar.gz file contains the checkpoint image as created by
CRIU and a few additional JSON files describing the state of the
checkpointed container.

Now the container is running on the destination system with the same
state just as during checkpointing. If the container is kept running
on the source system with the checkpoint flag '-R', the result will be
that the same container is running on two different hosts.

Signed-off-by: Adrian Reber <areber@redhat.com>
2019-06-03 22:05:12 +02:00
..
common Set blob cache directory based on GraphDriver 2019-03-29 08:27:33 -04:00
driver switch projectatomic to containers 2018-08-16 17:12:36 +00:00
events set default event logger based on build tags 2019-05-14 16:17:11 -05:00
image change from sysregistries to sysregistriesv2 2019-05-03 10:38:51 -04:00
layers
lock When refreshing after a reboot, force lock allocation 2019-05-06 14:17:54 -04:00
boltdb_state.go Update vendor of buildah and containers/images 2019-05-20 13:39:40 -04:00
boltdb_state_internal.go Update vendor of buildah and containers/images 2019-05-20 13:39:40 -04:00
boltdb_state_linux.go podman-remote inspect 2019-01-18 15:43:11 -06:00
boltdb_state_unsupported.go podman-remote inspect 2019-01-18 15:43:11 -06:00
common_test.go podman-remote inspect 2019-01-18 15:43:11 -06:00
container.go Address comments 2019-05-28 11:10:57 -04:00
container_api.go Added support to migrate containers 2019-06-03 22:05:12 +02:00
container_attach_linux.go Ensure that start() in StartAndAttach() is locked 2019-05-14 14:54:21 -04:00
container_attach_unsupported.go Ensure that start() in StartAndAttach() is locked 2019-05-14 14:54:21 -04:00
container_commit.go Minor fix splitting env vars in podman-commit 2019-05-19 06:51:30 +05:30
container_graph.go pod infra container is started before a container in a pod is run, started, or attached. 2019-02-15 16:39:24 -05:00
container_graph_test.go Update unit tests to use in-memory lock manager 2019-01-04 09:51:09 -05:00
container_inspect.go Add support for retry count with --restart flag 2019-05-03 10:36:16 -04:00
container_internal.go Added support to migrate containers 2019-06-03 22:05:12 +02:00
container_internal_linux.go Added support to migrate containers 2019-06-03 22:05:12 +02:00
container_internal_test.go Potentially breaking: Make hooks sort order locale-independent 2019-04-09 21:08:44 +02:00
container_internal_unsupported.go Make sure buildin volumes have the same ownership and permissions as image 2019-03-15 10:44:44 -04:00
container_linux.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
container_log.go Add --follow to journald ctr logging 2019-05-28 11:14:08 -04:00
container_log_linux.go Add --follow to journald ctr logging 2019-05-28 11:14:08 -04:00
container_log_unsupported.go Address comments 2019-05-28 11:10:57 -04:00
container_top_linux.go rootless: fix top huser and hgroup 2019-05-23 14:45:17 +02:00
container_top_unsupported.go podman-top: use containers/psgo 2018-07-19 20:47:52 +00:00
container_unsupported.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
diff.go Don't output inodes created to run a container 2018-09-21 09:45:14 +00:00
errors.go Fix manual detach from containers to not wait for exit 2019-02-12 10:14:57 -05:00
events.go Add System event type and renumber, refresh events 2019-04-25 16:23:09 -04:00
healthcheck.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
healthcheck_linux.go healthcheck benign error 2019-05-13 08:33:51 -05:00
healthcheck_unsupported.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
in_memory_state.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
info.go vendor buildah, image, storage, cni 2019-03-28 15:12:26 +01:00
kube.go Remove unused return statement in kube volume code 2019-05-21 23:08:39 -04:00
mounts_linux.go set root propagation based on volume properties 2018-11-26 13:55:02 +01:00
networking_linux.go network: raise a clearer error when using CNI 2019-05-14 15:37:47 +02:00
networking_unsupported.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
oci.go Address comments 2019-05-28 11:10:57 -04:00
oci_linux.go Address comments 2019-05-28 11:10:57 -04:00
oci_unsupported.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
options.go Address comments 2019-05-28 11:10:57 -04:00
pod.go Convert pods to SHM locks 2019-01-04 09:51:09 -05:00
pod_api.go Sending signals to containers prevents restart policy 2019-05-03 10:36:16 -04:00
pod_internal.go When refreshing after a reboot, force lock allocation 2019-05-06 14:17:54 -04:00
pod_top_linux.go rootless: fix top huser and hgroup 2019-05-23 14:45:17 +02:00
pod_top_unsupported.go Add podman pod top 2018-08-23 15:01:17 +00:00
runtime.go runtime: unlock the alive lock only once 2019-05-28 15:54:26 +02:00
runtime_ctr.go Added support to migrate containers 2019-06-03 22:05:12 +02:00
runtime_img.go Use standard remove functions for removing pod ctrs 2019-05-10 14:14:29 -04:00
runtime_img_test.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
runtime_migrate.go system: migrate stops the pause process 2019-05-17 20:48:25 +02:00
runtime_migrate_unsupported.go system: migrate stops the pause process 2019-05-17 20:48:25 +02:00
runtime_pod.go Fixing network ns segfault 2018-08-23 18:16:28 +00:00
runtime_pod_infra_linux.go Fix generation of infra container command 2019-03-10 14:25:13 -04:00
runtime_pod_linux.go When removing pods, free their locks 2019-05-14 10:38:21 -04:00
runtime_pod_unsupported.go Added option to share kernel namespaces in libpod and podman 2018-08-23 18:16:28 +00:00
runtime_renumber.go Add System event type and renumber, refresh events 2019-04-25 16:23:09 -04:00
runtime_volume.go Add event logging to libpod, even display to podman 2019-03-11 15:08:59 -05:00
runtime_volume_linux.go Use standard remove functions for removing pod ctrs 2019-05-10 14:14:29 -04:00
runtime_volume_unsupported.go Add gating tasks 2019-03-13 12:10:35 -05:00
state.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
state_test.go Add ability to rewrite pod configs in the database 2019-02-21 10:51:42 -05:00
stats.go Add ability for ubuntu to be tested 2018-10-03 12:45:37 -05:00
stats_config.go changes to allow for darwin compilation 2018-06-29 20:44:09 +00:00
stats_unsupported.go changes to allow for darwin compilation 2018-06-29 20:44:09 +00:00
storage.go OpenTracing support added to start, stop, run, create, pull, and ps 2019-02-18 09:57:08 -05:00
util.go util: fix race condition in WaitForFile 2019-05-20 19:40:15 +02:00
util_linux.go Default to SELinux private label for play kube mounts 2019-03-28 09:54:31 -04:00
util_test.go
util_unsupported.go Default to SELinux private label for play kube mounts 2019-03-28 09:54:31 -04:00
version.go enable podman-remote version 2019-01-21 15:23:30 -06:00
volume.go volumes: push the chown logic to runtime_volume_linux.go 2019-03-29 14:04:44 +01:00
volume_internal.go Remove locks from volumes 2019-02-21 10:51:42 -05:00