github.com/influxdata/telegraf@v1.30.3/internal/docker/docker.go (about) 1 package docker 2 3 import "strings" 4 5 // ParseImage Adapts some of the logic from the actual Docker library's image parsing routines: 6 // https://github.com/docker/distribution/blob/release/2.7/reference/normalize.go 7 func ParseImage(image string) (imageName string, imageVersion string) { 8 domain := "" 9 remainder := "" 10 11 i := strings.IndexRune(image, '/') 12 13 if i == -1 || (!strings.ContainsAny(image[:i], ".:") && image[:i] != "localhost") { 14 remainder = image 15 } else { 16 domain, remainder = image[:i], image[i+1:] 17 } 18 19 imageVersion = "unknown" 20 i = strings.LastIndex(remainder, ":") 21 if i > -1 { 22 imageVersion = remainder[i+1:] 23 imageName = remainder[:i] 24 } else { 25 imageName = remainder 26 } 27 28 if domain != "" { 29 imageName = domain + "/" + imageName 30 } 31 32 return imageName, imageVersion 33 }