
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>
81 lines
1.5 KiB
Go
81 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/Sirupsen/logrus"
|
|
"github.com/containerd/containerd/version"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var (
|
|
extraCmds = []cli.Command{}
|
|
)
|
|
|
|
func init() {
|
|
cli.VersionPrinter = func(c *cli.Context) {
|
|
fmt.Println(c.App.Name, version.Package, c.App.Version)
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
app := cli.NewApp()
|
|
app.Name = "ctr"
|
|
app.Version = version.Version
|
|
app.Usage = `
|
|
__
|
|
_____/ /______
|
|
/ ___/ __/ ___/
|
|
/ /__/ /_/ /
|
|
\___/\__/_/
|
|
|
|
containerd client
|
|
`
|
|
app.Flags = []cli.Flag{
|
|
cli.BoolFlag{
|
|
Name: "debug",
|
|
Usage: "enable debug output in logs",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "address, a",
|
|
Usage: "address for containerd's GRPC server",
|
|
Value: "/run/containerd/containerd.sock",
|
|
},
|
|
cli.StringFlag{
|
|
// TODO(stevvooe): for now, we allow circumventing the GRPC. Once
|
|
// we have clear separation, this will likely go away.
|
|
Name: "root",
|
|
Usage: "path to content store root",
|
|
Value: "/var/lib/containerd",
|
|
},
|
|
}
|
|
app.Commands = []cli.Command{
|
|
checkpointCommand,
|
|
runCommand,
|
|
eventsCommand,
|
|
deleteCommand,
|
|
listCommand,
|
|
infoCommand,
|
|
killCommand,
|
|
pprofCommand,
|
|
execCommand,
|
|
pauseCommand,
|
|
resumeCommand,
|
|
snapshotCommand,
|
|
versionCommand,
|
|
psCommand,
|
|
}
|
|
app.Commands = append(app.Commands, extraCmds...)
|
|
app.Before = func(context *cli.Context) error {
|
|
if context.GlobalBool("debug") {
|
|
logrus.SetLevel(logrus.DebugLevel)
|
|
}
|
|
return nil
|
|
}
|
|
if err := app.Run(os.Args); err != nil {
|
|
fmt.Fprintf(os.Stderr, "ctr: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|