code: func (c *Cluster) PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration, nodes ...string) error {
  	var w safe.Buffer
  	if opts.OutputStream != nil {
  		mw := io.MultiWriter(&w, opts.OutputStream)
  		opts.OutputStream = mw
  	} else {
  		opts.OutputStream = &w
  	}
  	key := imageKey(opts.Repository, opts.Tag)
  	_, err := c.runOnNodes(func(n node) (interface{}, error) {
  		n.setPersistentClient()
  		err := n.PullImage(opts, auth)
  		if err != nil {
  			return nil, err
  		}
  		img, err := n.InspectImage(key)
  		if err != nil {
  			return nil, err
  		}
  		return nil, c.storage().StoreImage(key, img.ID, n.addr)
  	}, docker.ErrNoSuchImage, true, nodes...)
  	if err != nil {
  		return err
  	}
  	digest, _ := fix.GetImageDigest(w.String())
  	return c.storage().SetImageDigest(key, digest)
  }
docs: // PullImage pulls an image from a remote registry server, returning an error
  // in case of failure.
  //
  // It will pull all images in parallel, so users need to make sure that the
  // given buffer is safe.