mirror of
https://github.com/containers/podman.git
synced 2025-06-23 10:38:20 +08:00
Merge pull request #2895 from mheon/commit_no_default_include_volumes
Add --include-volumes flag to 'podman commit'
This commit is contained in:
@ -94,6 +94,7 @@ type CommitValues struct {
|
||||
Author string
|
||||
Pause bool
|
||||
Quiet bool
|
||||
IncludeVolumes bool
|
||||
}
|
||||
|
||||
type ContainersPrune struct {
|
||||
|
@ -2,19 +2,19 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/containers/libpod/cmd/podman/cliconfig"
|
||||
"github.com/spf13/cobra"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/containers/buildah"
|
||||
"github.com/containers/image/manifest"
|
||||
"github.com/containers/libpod/cmd/podman/cliconfig"
|
||||
"github.com/containers/libpod/cmd/podman/libpodruntime"
|
||||
"github.com/containers/libpod/libpod"
|
||||
"github.com/containers/libpod/libpod/image"
|
||||
"github.com/containers/libpod/pkg/util"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var (
|
||||
@ -47,7 +47,7 @@ func init() {
|
||||
flags.StringVarP(&commitCommand.Author, "author", "a", "", "Set the author for the image committed")
|
||||
flags.BoolVarP(&commitCommand.Pause, "pause", "p", false, "Pause container during commit")
|
||||
flags.BoolVarP(&commitCommand.Quiet, "quiet", "q", false, "Suppress output")
|
||||
|
||||
flags.BoolVar(&commitCommand.IncludeVolumes, "include-volumes", false, "Include container volumes as image volumes")
|
||||
}
|
||||
|
||||
func commitCmd(c *cliconfig.CommitValues) error {
|
||||
@ -111,6 +111,7 @@ func commitCmd(c *cliconfig.CommitValues) error {
|
||||
options := libpod.ContainerCommitOptions{
|
||||
CommitOptions: coptions,
|
||||
Pause: c.Pause,
|
||||
IncludeVolumes: c.IncludeVolumes,
|
||||
Message: c.Message,
|
||||
Changes: c.Change,
|
||||
Author: c.Author,
|
||||
|
@ -39,6 +39,10 @@ not specifically set, the default format used is _oci_.
|
||||
|
||||
Write the image ID to the file.
|
||||
|
||||
**--include-volumes**
|
||||
|
||||
Include in the committed image any volumes added to the container by the `--volume` or `--mount` options to the `podman create` and `podman run` commands.
|
||||
|
||||
**--message, -m**
|
||||
|
||||
Set commit message for committed image. The message field is not supported in _oci_ format.
|
||||
|
@ -21,6 +21,7 @@ import (
|
||||
type ContainerCommitOptions struct {
|
||||
buildah.CommitOptions
|
||||
Pause bool
|
||||
IncludeVolumes bool
|
||||
Author string
|
||||
Message string
|
||||
Changes []string
|
||||
@ -113,11 +114,13 @@ func (c *Container) Commit(ctx context.Context, destImage string, options Contai
|
||||
// User
|
||||
importBuilder.SetUser(c.User())
|
||||
// Volumes
|
||||
if options.IncludeVolumes {
|
||||
for _, v := range c.config.UserVolumes {
|
||||
if v != "" {
|
||||
importBuilder.AddVolume(v)
|
||||
}
|
||||
}
|
||||
}
|
||||
// Workdir
|
||||
importBuilder.SetWorkDir(c.Spec().Process.Cwd)
|
||||
|
||||
|
@ -131,7 +131,7 @@ var _ = Describe("Podman commit", func() {
|
||||
Expect(check.ExitCode()).To(Equal(0))
|
||||
})
|
||||
|
||||
It("podman commit with volume mounts", func() {
|
||||
It("podman commit with volumes mounts and no include-volumes", func() {
|
||||
s := podmanTest.Podman([]string{"run", "--name", "test1", "-v", "/tmp:/foo", "alpine", "date"})
|
||||
s.WaitWithDefaultTimeout()
|
||||
Expect(s.ExitCode()).To(Equal(0))
|
||||
@ -140,6 +140,23 @@ var _ = Describe("Podman commit", func() {
|
||||
c.WaitWithDefaultTimeout()
|
||||
Expect(c.ExitCode()).To(Equal(0))
|
||||
|
||||
inspect := podmanTest.Podman([]string{"inspect", "newimage"})
|
||||
inspect.WaitWithDefaultTimeout()
|
||||
Expect(inspect.ExitCode()).To(Equal(0))
|
||||
image := inspect.InspectImageJSON()
|
||||
_, ok := image[0].Config.Volumes["/foo"]
|
||||
Expect(ok).To(BeFalse())
|
||||
})
|
||||
|
||||
It("podman commit with volume mounts and --include-volumes", func() {
|
||||
s := podmanTest.Podman([]string{"run", "--name", "test1", "-v", "/tmp:/foo", "alpine", "date"})
|
||||
s.WaitWithDefaultTimeout()
|
||||
Expect(s.ExitCode()).To(Equal(0))
|
||||
|
||||
c := podmanTest.Podman([]string{"commit", "--include-volumes", "test1", "newimage"})
|
||||
c.WaitWithDefaultTimeout()
|
||||
Expect(c.ExitCode()).To(Equal(0))
|
||||
|
||||
inspect := podmanTest.Podman([]string{"inspect", "newimage"})
|
||||
inspect.WaitWithDefaultTimeout()
|
||||
Expect(inspect.ExitCode()).To(Equal(0))
|
||||
|
Reference in New Issue
Block a user