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  }