code: func (c *Cluster) ListContainers(opts docker.ListContainersOptions) ([]docker.APIContainers, error) {
  	nodes, err := c.Nodes()
  	if err != nil {
  		return nil, err
  	}
  	var wg sync.WaitGroup
  	result := make(chan []docker.APIContainers, len(nodes))
  	errs := make(chan error, len(nodes))
  	for _, n := range nodes {
  		wg.Add(1)
  		client, _ := c.getNodeByAddr(n.Address)
  		go func(n node) {
  			defer wg.Done()
  			if containers, err := n.ListContainers(opts); err != nil {
  				errs <- wrapError(n, err)
  			} else {
  				result <- containers
  			}
  		}(client)
  	}
  	wg.Wait()
  	var group []docker.APIContainers
  	for {
  		select {
  		case containers := <-result:
  			group = append(group, containers...)
  		case err = <-errs:
  		default:
  			return group, err
  		}
  	}
  }
docs: // ListContainers returns a slice of all containers in the cluster matching the
  // given criteria.