pod: fix duplicate volumes from containers.conf

If some volumes are specified in containers.conf, they are currently
added twice to the containers spec causing the container to fail:

$ head -n2 ~/.config/containers/containers.conf
[containers]
volumes = ["/tmp:/tmp"]
$ podman pod create --name foo
7ac7f97f9b74a596332483e4a13e58cb9c8d997e9c5baae46804ae0acc26cbc6
$ podman run --pod=foo alpine true
Error: "/tmp": duplicate mount destination

The fix is to ignore the setting from containers.conf when setting the
pod default configuration.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
Giuseppe Scrivano 2023-09-08 16:02:49 +02:00
parent f8e1ec731e
commit fbbad04398
No known key found for this signature in database
GPG Key ID: 67E38F7A8BA21772
2 changed files with 22 additions and 0 deletions

View File

@ -62,6 +62,10 @@ func init() {
flags := createCommand.Flags()
flags.SetInterspersed(false)
common.DefineCreateDefaults(&infraOptions)
// these settings are not applicable to pod create since they are per-container
// and they will end up being duplicated for each container in the pod.
infraOptions.Volume = nil
infraOptions.Mount = nil
common.DefineCreateFlags(createCommand, &infraOptions, entities.InfraMode)
common.DefineNetFlags(createCommand)

View File

@ -71,6 +71,24 @@ function teardown() {
}
@test "podman pod create - custom volumes" {
skip_if_remote "CONTAINERS_CONF_OVERRIDE only affects server side"
image="i.do/not/exist:image"
tmpdir=$PODMAN_TMPDIR/pod-test
mkdir -p $tmpdir
containersconf=$tmpdir/containers.conf
cat >$containersconf <<EOF
[containers]
volumes = ["/tmp:/foobar"]
EOF
CONTAINERS_CONF_OVERRIDE=$containersconf run_podman pod create
podid="$output"
CONTAINERS_CONF_OVERRIDE=$containersconf run_podman create --pod $podid $IMAGE grep foobar /proc/mounts
}
@test "podman pod create - custom infra image" {
skip_if_remote "CONTAINERS_CONF_OVERRIDE only affects server side"
image="i.do/not/exist:image"