code: func DockerUserAgent(ctx context.Context) string {
  	httpVersion := make([]useragent.VersionInfo, 0, 6)
  	httpVersion = append(httpVersion, useragent.VersionInfo{Name: "docker", Version: Version})
  	httpVersion = append(httpVersion, useragent.VersionInfo{Name: "go", Version: runtime.Version()})
  	httpVersion = append(httpVersion, useragent.VersionInfo{Name: "git-commit", Version: GitCommit})
  	if kernelVersion, err := kernel.GetKernelVersion(); err == nil {
  		httpVersion = append(httpVersion, useragent.VersionInfo{Name: "kernel", Version: kernelVersion.String()})
  	}
  	httpVersion = append(httpVersion, useragent.VersionInfo{Name: "os", Version: runtime.GOOS})
  	httpVersion = append(httpVersion, useragent.VersionInfo{Name: "arch", Version: runtime.GOARCH})
  
  	dockerUA := useragent.AppendVersions("", httpVersion...)
  	upstreamUA := getUserAgentFromContext(ctx)
  	if len(upstreamUA) > 0 {
  		ret := insertUpstreamUserAgent(upstreamUA, dockerUA)
  		return ret
  	}
  	return dockerUA
  }
docs: // DockerUserAgent is the User-Agent the Docker client uses to identify itself.
  // In accordance with RFC 7231 (5.5.3) is of the form:
  //    [docker client's UA] UpstreamClient([upstream client's UA])