code: func (cluster *KafkaCluster) Start() error {
  	cluster.mu.Lock()
  	defer cluster.mu.Unlock()
  
  	// ensure  cluster is not running
  	if err := cluster.Stop(); err != nil {
  		return fmt.Errorf("cannot ensure stop cluster: %s", err)
  	}
  	if err := cluster.removeStoppedContainers(); err != nil {
  		return fmt.Errorf("cannot cleanup dead containers: %s", err)
  	}
  
  	args := []string{"--no-ansi", "up", "-d", "--scale", fmt.Sprintf("kafka=%d", cluster.size)}
  	upCmd, _, stderr := cluster.cmd("docker-compose", args...)
  	err := upCmd.Run()
  	if err != nil {
  		return fmt.Errorf("docker-compose error: %s, %s", err, stderr)
  	}
  
  	containers, err := cluster.Containers()
  	if err != nil {
  		_ = cluster.Stop()
  		return fmt.Errorf("cannot get containers info: %s", err)
  	}
  	cluster.containers = containers
  	return nil
  }
docs: // Start start zookeeper and kafka nodes using docker-compose command. Upon
  // successful process spawn, cluster is scaled to required amount of nodes.