diff --git a/cmd/podman/root.go b/cmd/podman/root.go index 500a475bd6..9b1aa778be 100644 --- a/cmd/podman/root.go +++ b/cmd/podman/root.go @@ -429,6 +429,10 @@ func rootFlags(cmd *cobra.Command, opts *entities.PodmanConfig) { pFlags.BoolVar(&opts.Trace, "trace", false, "Enable opentracing output (default false)") + volumePathFlagName := "volumepath" + pFlags.StringVar(&opts.Engine.VolumePath, volumePathFlagName, "", "Path to the volume directory in which volume data is stored") + _ = cmd.RegisterFlagCompletionFunc(volumePathFlagName, completion.AutocompleteDefault) + // Hide these flags for both ABI and Tunneling for _, f := range []string{ "cpu-profile", diff --git a/docs/source/markdown/podman.1.md b/docs/source/markdown/podman.1.md index aad12c584d..3d1578ea1b 100644 --- a/docs/source/markdown/podman.1.md +++ b/docs/source/markdown/podman.1.md @@ -193,6 +193,10 @@ Some example URL values in valid formats: Print the version +#### **--volumepath**=*value* + +Volume directory where builtin volume information is stored (default: "/var/lib/containers/storage/volumes" for UID 0, "$HOME/.local/share/containers/storage/volumes" for other users). Default volume path can be overridden in `containers.conf`. + ## Environment Variables Podman can set up environment variables from env of [engine] table in containers.conf. These variables can be overridden by passing environment variables before the `podman` commands. diff --git a/pkg/domain/infra/runtime_libpod.go b/pkg/domain/infra/runtime_libpod.go index 5fdc252e27..ac557e9ded 100644 --- a/pkg/domain/infra/runtime_libpod.go +++ b/pkg/domain/infra/runtime_libpod.go @@ -209,6 +209,10 @@ func getRuntime(ctx context.Context, fs *flag.FlagSet, opts *engineOpts) (*libpo options = append(options, libpod.WithEventsLogger(cfg.Engine.EventsLogger)) } + if fs.Changed("volumepath") { + options = append(options, libpod.WithVolumePath(cfg.Engine.VolumePath)) + } + if fs.Changed("cgroup-manager") { options = append(options, libpod.WithCgroupManager(cfg.Engine.CgroupManager)) } else { diff --git a/pkg/specgenutil/util.go b/pkg/specgenutil/util.go index 80d31398bc..fa2e904570 100644 --- a/pkg/specgenutil/util.go +++ b/pkg/specgenutil/util.go @@ -281,6 +281,7 @@ func CreateExitCommandArgs(storageConfig storageTypes.StoreOptions, config *conf "--tmpdir", config.Engine.TmpDir, "--network-config-dir", config.Network.NetworkConfigDir, "--network-backend", config.Network.NetworkBackend, + "--volumepath", config.Engine.VolumePath, } if config.Engine.OCIRuntime != "" { command = append(command, []string{"--runtime", config.Engine.OCIRuntime}...) diff --git a/test/system/005-info.bats b/test/system/005-info.bats index 1d84ede9b8..333553b070 100644 --- a/test/system/005-info.bats +++ b/test/system/005-info.bats @@ -107,4 +107,12 @@ host.slirp4netns.executable | $expr_path fi } +@test "podman --root PATH --volumepath info - basic output" { + volumePath=${PODMAN_TMPDIR}/volumesGoHere + if ! is_remote; then + run_podman --storage-driver=vfs --root ${PODMAN_TMPDIR}/nothing-here-move-along --volumepath ${volumePath} info --format '{{ .Store.VolumePath }}' + is "$output" "${volumePath}" "'podman --volumepath should reset VolumePath" + fi +} + # vim: filetype=sh