diff options
author | Boaz Shuster <boaz.shuster.github@gmail.com> | 2020-01-01 09:53:25 +0200 |
---|---|---|
committer | Boaz Shuster <boaz.shuster.github@gmail.com> | 2020-03-03 14:27:11 +0200 |
commit | 11e5c53d1191f7a324f212aa2ca2ec2aad1b4676 (patch) | |
tree | d90b96daccd6e8459adac7a5553766c858bc3bde /cmd/podman/run.go | |
parent | 1641ee61802ad5e13a9ddf0a20099fe31f73768d (diff) | |
download | podman-11e5c53d1191f7a324f212aa2ca2ec2aad1b4676.tar.gz podman-11e5c53d1191f7a324f212aa2ca2ec2aad1b4676.tar.bz2 podman-11e5c53d1191f7a324f212aa2ca2ec2aad1b4676.zip |
Add the rmi flag to podman-run to delete container image
The --rmi flag will delete the container image after its execution
unless that image is already been used by another container(s).
This is useful when one wants to execute a container once and remove
any resources attached to it.
Signed-off-by: Boaz Shuster <boaz.shuster.github@gmail.com>
Diffstat (limited to 'cmd/podman/run.go')
-rw-r--r-- | cmd/podman/run.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cmd/podman/run.go b/cmd/podman/run.go index 219f057c3..27247c5b5 100644 --- a/cmd/podman/run.go +++ b/cmd/podman/run.go @@ -7,6 +7,7 @@ import ( "github.com/containers/libpod/pkg/adapter" "github.com/opentracing/opentracing-go" "github.com/pkg/errors" + "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -38,6 +39,7 @@ func init() { flags.SetInterspersed(false) flags.SetNormalizeFunc(aliasFlags) flags.Bool("sig-proxy", true, "Proxy received signals to the process") + flags.Bool("rmi", false, "Remove container image unless used by other containers") flags.AddFlagSet(getNetFlags()) getCreateFlags(&runCommand.PodmanCommand) markFlagHiddenForRemoteClient("authfile", flags) @@ -64,5 +66,13 @@ func runCmd(c *cliconfig.RunValues) error { defer runtime.DeferredShutdown(false) exitCode, err = runtime.Run(getContext(), c, exitCode) + if c.Bool("rmi") { + imageName := c.InputArgs[0] + if newImage, newImageErr := runtime.NewImageFromLocal(imageName); newImageErr != nil { + logrus.Errorf("%s", errors.Wrapf(newImageErr, "failed creating image object")) + } else if _, errImage := runtime.RemoveImage(getContext(), newImage, false); errImage != nil { + logrus.Errorf("%s", errors.Wrapf(errImage, "failed removing image")) + } + } return err } |