ctr: make kill use stop-signal by default
The OCI image specification includes a `StopSignal` field in the image configuration, denoting the system call signal to be sent to the container to exit. This commit adds a new `WithImageStopSignal` container option that can be used for storing the `StopSignal` field as a label on the container. This commit also adjusts `ctr run` to call `WithImageStopSignal` and `ctr tasks kill` to send the signal stored in that label by default. Signed-off-by: Samuel Karp <skarp@amazon.com>
This commit is contained in:
@@ -23,6 +23,8 @@ import (
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
const defaultSignal = "SIGTERM"
|
||||
|
||||
var killCommand = cli.Command{
|
||||
Name: "kill",
|
||||
Usage: "signal a container (default: SIGTERM)",
|
||||
@@ -30,7 +32,7 @@ var killCommand = cli.Command{
|
||||
Flags: []cli.Flag{
|
||||
cli.StringFlag{
|
||||
Name: "signal, s",
|
||||
Value: "SIGTERM",
|
||||
Value: "",
|
||||
Usage: "signal to send to the container",
|
||||
},
|
||||
cli.StringFlag{
|
||||
@@ -47,7 +49,7 @@ var killCommand = cli.Command{
|
||||
if id == "" {
|
||||
return errors.New("container id must be provided")
|
||||
}
|
||||
signal, err := containerd.ParseSignal(context.String("signal"))
|
||||
signal, err := containerd.ParseSignal(defaultSignal)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -74,6 +76,17 @@ var killCommand = cli.Command{
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if context.String("signal") != "" {
|
||||
signal, err = containerd.ParseSignal(context.String("signal"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
signal, err = containerd.GetStopSignal(ctx, container, signal)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
task, err := container.Task(ctx, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
|
Reference in New Issue
Block a user