Skip to content

Commit

Permalink
container create: record correct image name
Browse files Browse the repository at this point in the history
Record the correct image name when creating a container by using the
resolved image name if present.  Otherwise, default to using the first
available name or an empty string in which case the image must have been
referenced by ID.

Fixes: #8082
Signed-off-by: Valentin Rothberg <[email protected]>
  • Loading branch information
vrothberg committed Oct 21, 2020
1 parent 9d9c58b commit 410fa53
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 5 deletions.
2 changes: 1 addition & 1 deletion libpod/image/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
17 changes: 13 additions & 4 deletions pkg/specgen/generate/container_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"context"
"os"
"path/filepath"
"strings"

"github.com/containers/common/pkg/config"
"github.com/containers/podman/v2/libpod"
Expand Down Expand Up @@ -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 {
Expand Down
19 changes: 19 additions & 0 deletions test/system/030-run.bats
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 410fa53

Please sign in to comment.