diff --git a/pkg/kubelet/dockertools/docker.go b/pkg/kubelet/dockertools/docker.go index d5f2c6aadb9..cfff0ac8c38 100644 --- a/pkg/kubelet/dockertools/docker.go +++ b/pkg/kubelet/dockertools/docker.go @@ -166,24 +166,19 @@ func matchImageTagOrSHA(inspected dockertypes.ImageInspect, image string) bool { // No Tag or SHA specified, so just return what we have return true } - if isTagged { - hostname, _ := dockerref.SplitHostname(named) - // Check the RepoTags for an exact match - for _, tag := range inspected.RepoTags { - // Deal with image with hostname specified - if len(hostname) > 0 { - if strings.HasSuffix(image, tag) { - return true - } - } else { - if tag == image { - // We found a specific tag that we were looking for - return true - } + if isTagged { + // Check the RepoTags for a match. + for _, tag := range inspected.RepoTags { + // An image name (without the tag/digest) can be [hostname '/'] component ['/' component]* + // Because either the RepoTag or the name *may* contain the + // hostname or not, we only check for the suffix match. + if strings.HasSuffix(image, tag) || strings.HasSuffix(tag, image) { + return true } } } + if isDigested { algo := digest.Digest().Algorithm().String() sha := digest.Digest().Hex() diff --git a/pkg/kubelet/dockertools/docker_test.go b/pkg/kubelet/dockertools/docker_test.go index 411f5e3c195..2046cd279f5 100644 --- a/pkg/kubelet/dockertools/docker_test.go +++ b/pkg/kubelet/dockertools/docker_test.go @@ -183,6 +183,11 @@ func TestMatchImageTagOrSHA(t *testing.T) { Image: "docker.io/colemickens/hyperkube-amd64:217.9beff63", Output: true, }, + { + Inspected: dockertypes.ImageInspect{RepoTags: []string{"docker.io/kubernetes/pause:latest"}}, + Image: "kubernetes/pause:latest", + Output: true, + }, { Inspected: dockertypes.ImageInspect{ ID: "sha256:2208f7a29005d226d1ee33a63e33af1f47af6156c740d7d23c7948e8d282d53d",