| Line 1: |
Line 1: |
| − | == External Checkpoint Restore ==
| + | {{Warning|External C/R was done as a proof-of-concept. Do not use it; please see [[Docker]] for a proper way to do checkpoint/restore with Docker. This article is kept here for historical purposes and some background info.}} |
| − | | |
| − | {{Note| External C/R was done as proof-of-concept. Its use is discouraged and the helper script mentioned below may break in the near future.}} | |
| | | | |
| | This approach is called external because it's happening external to the | | This approach is called external because it's happening external to the |
| Line 25: |
Line 23: |
| | include the Docker daemon which runs in the global PID namespace. | | include the Docker daemon which runs in the global PID namespace. |
| | | | |
| − | === Command Line Options ===
| + | == Command Line Options == |
| | | | |
| | In addition to the usual CRIU command line options used when | | In addition to the usual CRIU command line options used when |
| Line 31: |
Line 29: |
| | line options are needed for Docker containers. | | line options are needed for Docker containers. |
| | | | |
| − | ==== <code>--root</code> ====
| + | === <code>--root</code> === |
| | | | |
| | This option has been used in the past only for restore operations | | This option has been used in the past only for restore operations |
| Line 44: |
Line 42: |
| | be necessary to specify this option anymore. | | be necessary to specify this option anymore. |
| | | | |
| − | ==== <code>--ext-mount-map</code> ====
| + | === <code>--ext-mount-map</code> === |
| | | | |
| | This option is used to specify the path of the external bind mounts. | | This option is used to specify the path of the external bind mounts. |
| Line 55: |
Line 53: |
| | at <code>/var/lib/docker/containers/''container_id''/hostname</code>. | | at <code>/var/lib/docker/containers/''container_id''/hostname</code>. |
| | | | |
| − | ==== <code>--manage-cgroups</code> ====
| + | === <code>--manage-cgroups</code> === |
| | | | |
| | When a process tree exits after a checkpoint operation, the cgroups | | When a process tree exits after a checkpoint operation, the cgroups |
| Line 62: |
Line 60: |
| | re-creating them if necessary. | | re-creating them if necessary. |
| | | | |
| − | ==== <code>--evasive-devices</code> ====
| + | === <code>--evasive-devices</code> === |
| | | | |
| | Docker bind mounts <code>/dev/null</code> on <code>/dev/stdin</code> for detached containers | | Docker bind mounts <code>/dev/null</code> on <code>/dev/stdin</code> for detached containers |
| Line 69: |
Line 67: |
| | the global <code>/dev/null</code> and the container <code>/dev/null</code> as the same device. | | the global <code>/dev/null</code> and the container <code>/dev/null</code> as the same device. |
| | | | |
| − | ==== <code>--inherit-fd</code> ====
| + | === <code>--inherit-fd</code> === |
| | | | |
| | For native C/R support, this option tells CRIU to let the restored process "inherit" | | For native C/R support, this option tells CRIU to let the restored process "inherit" |
| | its specified file descriptor (instead of restoring from checkpoint). | | its specified file descriptor (instead of restoring from checkpoint). |
| | | | |
| − | === Restore Prework for External C/R ===
| + | == Restore Prework for External C/R == |
| | | | |
| | Docker supports many storage drivers (AKA graph drivers) including | | Docker supports many storage drivers (AKA graph drivers) including |
| Line 89: |
Line 87: |
| | filesystem again before attempting to restore. | | filesystem again before attempting to restore. |
| | | | |
| − | === An External C/R Example ===
| + | == An External C/R Example == |
| | | | |
| | Below is an example to show C/R operations for a shell script that | | Below is an example to show C/R operations for a shell script that |
| Line 164: |
Line 162: |
| | </pre> | | </pre> |
| | | | |
| − | === External C/R Helper Script ===
| + | == External C/R Helper Script == |
| | | | |
| | As seen in the above examples, the CRIU command line for checkpointing and | | As seen in the above examples, the CRIU command line for checkpointing and |
| Line 260: |
Line 258: |
| | </pre> | | </pre> |
| | | | |
| | + | == See also == |
| | + | |
| | + | * [[Docker]] |
| | | | |
| | [[Category:HOWTO]] | | [[Category:HOWTO]] |