podman/libpod
Adrian Reber 03c88a3deb
Added tcp-established to checkpoint/restore
CRIU can checkpoint and restore processes/containers with established
TCP connections if the correct option is specified. To implement
checkpoint and restore with support for established TCP connections with
Podman this commit adds the necessary options to runc during checkpoint
and also tells conmon during restore to use 'runc restore' with
'--tcp-established'.

For this Podman feature to work a corresponding conmon change is
required.

Example:

$ podman run --tmpfs /tmp --name podman-criu-test -d docker://docker.io/yovfiatbeb/podman-criu-test
$ nc `podman inspect -l | jq -r '.[0].NetworkSettings.IPAddress'` 8080
GET /examples/servlets/servlet/HelloWorldExample
Connection: keep-alive

1
GET /examples/servlets/servlet/HelloWorldExample
Connection: keep-alive

2
$ # Using HTTP keep-alive multiple requests are send to the server in the container
$ # Different terminal:
$ podman container checkpoint -l
criu failed: type NOTIFY errno 0
$ # Looking at the log file would show errors because of established TCP connections
$ podman container checkpoint -l --tcp-established
$ # This works now and after the restore the same connection as above can be used for requests
$ podman container restore -l --tcp-established

The restore would fail without '--tcp-established' as the checkpoint image
contains established TCP connections.

Signed-off-by: Adrian Reber <areber@redhat.com>
2018-11-28 08:00:38 +01:00
..
common Change un/pwd handling to match Buildah's 2018-02-06 09:29:23 -05:00
driver switch projectatomic to containers 2018-08-16 17:12:36 +00:00
image Merge pull request #1868 from QiWang19/issue860 2018-11-26 16:46:22 -08:00
layers Initial checkin from CRI-O repo 2017-11-01 11:24:59 -04:00
testdata Add hooks support to podman 2018-04-05 14:13:49 +00:00
boltdb_state.go Make failure to retrieve individual ctrs/pods nonfatal 2018-08-17 19:10:21 +00:00
boltdb_state_internal.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
boltdb_state_linux.go Log an otherwise ignored error from joining a net ns 2018-10-11 11:29:42 -04:00
boltdb_state_unsupported.go Fix build on non-linux platforms 2018-07-31 14:19:50 +00:00
common_test.go Rework state testing to allow State structs to be empty 2018-07-31 14:19:50 +00:00
container.go libpod should know if the network is disabled 2018-11-13 06:33:10 -05:00
container_api.go Added tcp-established to checkpoint/restore 2018-11-28 08:00:38 +01:00
container_attach.go attach: fix attach when cuid is too long 2018-10-30 15:35:24 +01:00
container_commit.go Vendor in new new buildah/ci 2018-10-17 17:04:19 -05:00
container_easyjson.go Allow containers/storage to handle on SELinux labeling 2018-10-23 10:57:23 -04:00
container_graph.go Remove a loop in container graph 2018-03-29 02:18:45 +00:00
container_graph_test.go Lint: Tests: add missing assertions 2018-11-10 10:52:24 +01:00
container_inspect.go Allow containers/storage to handle on SELinux labeling 2018-10-23 10:57:23 -04:00
container_internal.go Use also a struct to pass options to Restore() 2018-11-28 08:00:37 +01:00
container_internal_linux.go Use also a struct to pass options to Restore() 2018-11-28 08:00:37 +01:00
container_internal_test.go vendor containerd/cgroups 2018-09-06 15:19:25 +00:00
container_internal_unsupported.go Add support to checkpoint/restore containers 2018-10-03 21:41:39 +02:00
container_linux.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
container_top_linux.go vendor latest containers/psgo 2018-07-26 17:01:40 +00: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 Add namespaces and initial constraints to database 2018-07-24 16:12:31 -04:00
in_memory_state.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
info.go info: add rootless field 2018-11-09 09:41:57 +01:00
kube.go output libpod container to kubernetes yaml 2018-11-19 09:05:24 -06:00
mounts_linux.go set root propagation based on volume properties 2018-11-26 13:55:02 +01:00
networking_linux.go Merge pull request #1789 from mheon/fix_add_hosts_test 2018-11-09 09:41:26 -08:00
networking_unsupported.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
oci.go Added tcp-established to checkpoint/restore 2018-11-28 08:00:38 +01:00
oci_linux.go Use also a struct to pass options to Restore() 2018-11-28 08:00:37 +01:00
oci_unsupported.go Use also a struct to pass options to Restore() 2018-11-28 08:00:37 +01:00
options.go Allow users to expose ports from the pod to the host 2018-11-20 09:49:34 -06:00
pod.go Allow users to expose ports from the pod to the host 2018-11-20 09:49:34 -06:00
pod_api.go Add ContainerStateExited and OCI delete() in cleanup() 2018-10-02 12:05:22 -04:00
pod_easyjson.go Allow users to expose ports from the pod to the host 2018-11-20 09:49:34 -06:00
pod_internal.go Change pause container to infra container 2018-08-23 18:16:28 +00:00
pod_top_linux.go Add podman pod top 2018-08-23 15:01:17 +00:00
pod_top_unsupported.go Add podman pod top 2018-08-23 15:01:17 +00:00
runtime.go rootless: create libpod.conf when it doesn't exist 2018-11-19 12:11:05 +01:00
runtime_ctr.go rm -f now removes a paused container 2018-11-08 15:18:11 -06:00
runtime_img.go Vendor in new new buildah/ci 2018-10-17 17:04:19 -05:00
runtime_img_test.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
runtime_pod.go Fixing network ns segfault 2018-08-23 18:16:28 +00:00
runtime_pod_infra_linux.go Allow users to expose ports from the pod to the host 2018-11-20 09:49:34 -06:00
runtime_pod_linux.go Remove conmon cgroup before pod cgroup for cgroupfs 2018-11-07 09:45:34 -05:00
runtime_pod_unsupported.go Added option to share kernel namespaces in libpod and podman 2018-08-23 18:16:28 +00:00
state.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
state_test.go Rework state testing to allow State structs to be empty 2018-07-31 14:19:50 +00: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 Allow containers/storage to handle on SELinux labeling 2018-10-23 10:57:23 -04:00
util.go create: fix writing cidfile when using rootless 2018-10-23 22:13:17 +02:00
util_linux.go Fix build on non-Linux OSes 2018-08-15 18:07:04 +00:00
util_test.go Stage3 Image Library 2018-03-14 20:21:31 +00:00
util_unsupported.go Fix build on non-Linux OSes 2018-08-15 18:07:04 +00:00
version.go Fix setting of version information 2018-10-31 00:27:08 +01:00