code: func (c *Cluster) ListImages(opts docker.ListImagesOptions) ([]docker.APIImages, error) {
  	nodes, err := c.UnfilteredNodes()
  	if err != nil {
  		return nil, err
  	}
  	resultChan := make(chan []docker.APIImages, len(nodes))
  	errChan := make(chan error, len(nodes))
  	var wg sync.WaitGroup
  	for _, node := range nodes {
  		wg.Add(1)
  		go func(addr string) {
  			defer wg.Done()
  			client, err := c.getNodeByAddr(addr)
  			if err != nil {
  				errChan <- err
  			}
  			nodeImages, err := client.ListImages(opts)
  			if err != nil {
  				errChan <- wrapError(client, err)
  			}
  			resultChan <- nodeImages
  		}(node.Address)
  	}
  	wg.Wait()
  	close(resultChan)
  	close(errChan)
  	var allImages []docker.APIImages
  	for images := range resultChan {
  		allImages = append(allImages, images...)
  	}
  	select {
  	case err := <-errChan:
  		return allImages, err
  	default:
  	}
  	return allImages, nil
  }
docs: // ListImages lists images existing in each cluster node