diff --git a/pkg/image/containerd/daemon_provider.go b/pkg/image/containerd/daemon_provider.go index 26b4476f..ff45b7e2 100644 --- a/pkg/image/containerd/daemon_provider.go +++ b/pkg/image/containerd/daemon_provider.go @@ -507,10 +507,16 @@ func withMetadata(platform *platforms.Platform, ref string) (metadata []image.Ad // if image doesn't have host set, add docker hub by default func checkRegistryHostMissing(imageName string) string { parts := strings.Split(imageName, "/") - if len(parts) == 1 { + switch { + case len(parts) == 0: + return imageName + case len(parts) == 1: return fmt.Sprintf("docker.io/library/%s", imageName) - } else if len(parts) > 1 && !strings.Contains(parts[0], ".") { + case strings.Contains(parts[0], ".") || strings.Contains(parts[0], ":"): + return imageName + case parts[0] == "localhost" || parts[0] == "127.0.0.1": + return imageName + default: return fmt.Sprintf("docker.io/%s", imageName) } - return imageName } diff --git a/pkg/image/containerd/daemon_provider_test.go b/pkg/image/containerd/daemon_provider_test.go index 07e0b402..61714f47 100644 --- a/pkg/image/containerd/daemon_provider_test.go +++ b/pkg/image/containerd/daemon_provider_test.go @@ -32,6 +32,22 @@ func Test_checkRegistryHostMissing(t *testing.T) { image: "registry.place.io/thing:version", want: "registry.place.io/thing:version", }, + { + image: "127.0.0.1/thing:version", + want: "127.0.0.1/thing:version", + }, + { + image: "127.0.0.1:1234/thing:version", + want: "127.0.0.1:1234/thing:version", + }, + { + image: "localhost/thing:version", + want: "localhost/thing:version", + }, + { + image: "localhost:1234/thing:version", + want: "localhost:1234/thing:version", + }, { image: "alpine@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209", want: "docker.io/library/alpine@sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209",