
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>
79 lines
1.8 KiB
Go
79 lines
1.8 KiB
Go
package plugin
|
|
|
|
import "context"
|
|
|
|
type ContainerInfo struct {
|
|
ID string
|
|
Runtime string
|
|
Spec []byte
|
|
}
|
|
|
|
type Container interface {
|
|
// Information of the container
|
|
Info() ContainerInfo
|
|
// Start the container's user defined process
|
|
Start(context.Context) error
|
|
// State returns the container's state
|
|
State(context.Context) (State, error)
|
|
// Pause pauses the container process
|
|
Pause(context.Context) error
|
|
// Resume unpauses the container process
|
|
Resume(context.Context) error
|
|
// Kill signals a container
|
|
Kill(context.Context, uint32, uint32, bool) error
|
|
// Exec adds a process into the container
|
|
Exec(context.Context, ExecOpts) (Process, error)
|
|
// Processes returns all pids for the container
|
|
Processes(context.Context) ([]uint32, error)
|
|
// Pty resizes the processes pty/console
|
|
Pty(context.Context, uint32, ConsoleSize) error
|
|
// CloseStdin closes the processes stdin
|
|
CloseStdin(context.Context, uint32) error
|
|
// Checkpoint checkpoints a container to an image with live system data
|
|
Checkpoint(context.Context, CheckpointOpts) error
|
|
}
|
|
|
|
type CheckpointOpts struct {
|
|
Exit bool
|
|
AllowTCP bool
|
|
AllowUnixSockets bool
|
|
AllowTerminal bool
|
|
FileLocks bool
|
|
EmptyNamespaces []string
|
|
Path string
|
|
}
|
|
|
|
type ExecOpts struct {
|
|
Spec []byte
|
|
IO IO
|
|
}
|
|
|
|
type Process interface {
|
|
// State returns the process state
|
|
State(context.Context) (State, error)
|
|
// Kill signals a container
|
|
Kill(context.Context, uint32, bool) error
|
|
}
|
|
|
|
type ConsoleSize struct {
|
|
Width uint32
|
|
Height uint32
|
|
}
|
|
|
|
type Status int
|
|
|
|
const (
|
|
CreatedStatus Status = iota + 1
|
|
RunningStatus
|
|
StoppedStatus
|
|
DeletedStatus
|
|
PausedStatus
|
|
)
|
|
|
|
type State interface {
|
|
// Status is the current status of the container
|
|
Status() Status
|
|
// Pid is the main process id for the container
|
|
Pid() uint32
|
|
}
|