code: func NewDocker(u *url.URL) (Distribution, error) {
  	dp, err := parseCIMD(u)
  	if err != nil {
  		return nil, fmt.Errorf("cannot parse URI: %q: %v", u.String(), err)
  	}
  	if dp.Type != TypeDocker {
  		return nil, fmt.Errorf("wrong distribution type: %q", dp.Type)
  	}
  
  	parsed, err := d2acommon.ParseDockerURL(dp.Data)
  	if err != nil {
  		return nil, fmt.Errorf("bad docker URL %q: %v", dp.Data, err)
  	}
  
  	return &Docker{
  		url:       dp.Data,
  		parsedURL: parsed,
  		simple:    SimpleDockerRef(parsed),
  		full:      FullDockerRef(parsed),
  	}, nil
  }
docs: // NewDocker creates a new docker distribution from the provided distribution uri string