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:
Michael Crosby
2017-05-12 10:18:00 -07:00
parent 5ee77fc281
commit 7cc1b64bd8
31 changed files with 2153 additions and 406 deletions

View File

@@ -5,7 +5,6 @@ import (
"github.com/containerd/cgroups"
"github.com/containerd/cgroups/prometheus"
"github.com/containerd/containerd"
"github.com/containerd/containerd/plugin"
metrics "github.com/docker/go-metrics"
"golang.org/x/net/context"
@@ -41,7 +40,7 @@ type cgroupsMonitor struct {
collector *prometheus.Collector
oom *prometheus.OOMCollector
context context.Context
events chan<- *containerd.Event
events chan<- *plugin.Event
}
func (m *cgroupsMonitor) Monitor(c plugin.Container) error {
@@ -65,14 +64,14 @@ func (m *cgroupsMonitor) Stop(c plugin.Container) error {
return nil
}
func (m *cgroupsMonitor) Events(events chan<- *containerd.Event) {
func (m *cgroupsMonitor) Events(events chan<- *plugin.Event) {
m.events = events
}
func (m *cgroupsMonitor) trigger(id string, cg cgroups.Cgroup) {
m.events <- &containerd.Event{
m.events <- &plugin.Event{
Timestamp: time.Now(),
Type: containerd.OOMEvent,
Type: plugin.OOMEvent,
ID: id,
}
}