diff options
-rw-r--r-- | libpod/image/image.go | 2 | ||||
-rw-r--r-- | pkg/specgen/generate/container_create.go | 17 | ||||
-rw-r--r-- | test/system/030-run.bats | 19 |
3 files changed, 33 insertions, 5 deletions
diff --git a/libpod/image/image.go b/libpod/image/image.go index 0900944eb..85f8bf37c 100644 --- a/libpod/image/image.go +++ b/libpod/image/image.go @@ -469,7 +469,7 @@ func (ir *Runtime) getLocalImage(inputName string) (string, *storage.Image, erro if err != nil { return "", nil, err } - img, err := ir.store.Image(ref.String()) + img, err := ir.store.Image(reference.TagNameOnly(ref).String()) if err == nil { return ref.String(), img, nil } diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go index 105e36bc6..f051537de 100644 --- a/pkg/specgen/generate/container_create.go +++ b/pkg/specgen/generate/container_create.go @@ -4,6 +4,7 @@ import ( "context" "os" "path/filepath" + "strings" "github.com/containers/common/pkg/config" "github.com/containers/podman/v2/libpod" @@ -91,11 +92,19 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener if err != nil { return nil, err } - imgName := s.Image - names := newImage.Names() - if len(names) > 0 { - imgName = names[0] + // If the input name changed, we could properly resolve the + // image. Otherwise, it must have been an ID where we're + // defaulting to the first name or an empty one if no names are + // present. + imgName := newImage.InputName + if s.Image == newImage.InputName && strings.HasPrefix(newImage.ID(), s.Image) { + imgName = "" + names := newImage.Names() + if len(names) > 0 { + imgName = names[0] + } } + options = append(options, libpod.WithRootFSFromImage(newImage.ID(), imgName, s.RawImageName)) } if err := s.Validate(); err != nil { diff --git a/test/system/030-run.bats b/test/system/030-run.bats index 9f4037730..8712dc72d 100644 --- a/test/system/030-run.bats +++ b/test/system/030-run.bats @@ -473,4 +473,23 @@ json-file | f run_podman kill $cid } +# Regression test for issue #8082 +@test "podman run : look up correct image name" { + # Create a 2nd tag for the local image. + local name="localhost/foo/bar" + run_podman tag $IMAGE $name + + # Create a container with the 2nd tag and make sure that it's being + # used. #8082 always inaccurately used the 1st tag. + run_podman create $name + cid="$output" + + run_podman inspect --format "{{.ImageName}}" $cid + is "$output" "$name" + + # Clean up. + run_podman rm $cid + run_podman untag $IMAGE $name +} + # vim: filetype=sh |