Add checkpoint and restore
Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Update go-runc to 49b2a02ec1ed3e4ae52d30b54a291b75 Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Add shim to restore creation Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Keep checkpoint path in service Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Add C/R to non-shim build Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Checkpoint rw and image Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Pause container on bind checkpoints Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Return dump.log in error on checkpoint failure Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Pause container for checkpoint Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Update runc to 639454475cb9c8b861cc599f8bcd5c8c790ae402 For checkpoint into to work you need runc version 639454475cb9c8b861cc599f8bcd5c8c790ae402 + and criu 3.0 as this is what I have been testing with. Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Move restore behind create calls This remove the restore RPCs in favor of providing the checkpoint information to the `Create` calls of a container. If provided, the container will be created/restored from the checkpoint instead of an existing container. Signed-off-by: Michael Crosby <crosbymichael@gmail.com> Regen protos after rebase Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
@@ -25,15 +25,17 @@ func (s State) Status() plugin.Status {
|
||||
return s.status
|
||||
}
|
||||
|
||||
func newContainer(id string, shim shim.ShimClient) *Container {
|
||||
func newContainer(id string, spec []byte, shim shim.ShimClient) *Container {
|
||||
return &Container{
|
||||
id: id,
|
||||
shim: shim,
|
||||
spec: spec,
|
||||
}
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
id string
|
||||
id string
|
||||
spec []byte
|
||||
|
||||
shim shim.ShimClient
|
||||
}
|
||||
@@ -42,6 +44,7 @@ func (c *Container) Info() plugin.ContainerInfo {
|
||||
return plugin.ContainerInfo{
|
||||
ID: c.id,
|
||||
Runtime: runtimeName,
|
||||
Spec: c.spec,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +151,19 @@ func (c *Container) CloseStdin(ctx context.Context, pid uint32) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Container) Checkpoint(ctx context.Context, opts plugin.CheckpointOpts) error {
|
||||
_, err := c.shim.Checkpoint(ctx, &shim.CheckpointRequest{
|
||||
Exit: opts.Exit,
|
||||
AllowTcp: opts.AllowTCP,
|
||||
AllowUnixSockets: opts.AllowUnixSockets,
|
||||
AllowTerminal: opts.AllowTerminal,
|
||||
FileLocks: opts.FileLocks,
|
||||
EmptyNamespaces: opts.EmptyNamespaces,
|
||||
Image: opts.Path,
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
type Process struct {
|
||||
pid int
|
||||
c *Container
|
||||
|
||||
Reference in New Issue
Block a user