code: func (c *container) start(vm *VirtualMachine) {
  	if c.id != "" {
  		start := "start"
  		if vm.Runtime.PowerState == types.VirtualMachinePowerStateSuspended {
  			start = "unpause"
  		}
  		cmd := exec.Command("docker", start, c.id)
  		err := cmd.Run()
  		if err != nil {
  			log.Printf("%s %s: %s", vm.Name, cmd.Args, err)
  		}
  		return
  	}
  
  	var args []string
  
  	for _, opt := range vm.Config.ExtraConfig {
  		val := opt.GetOptionValue()
  		if val.Key == "RUN.container" {
  			run := val.Value.(string)
  			err := json.Unmarshal([]byte(run), &args)
  			if err != nil {
  				args = []string{run}
  			}
  
  			break
  		}
  	}
  
  	if len(args) == 0 {
  		return
  	}
  
  	args = append([]string{"run", "-d", "--name", vm.Name}, args...)
  	cmd := exec.Command("docker", args...)
  	out, err := cmd.Output()
  	if err != nil {
  		log.Printf("%s %s: %s", vm.Name, cmd.Args, err)
  		return
  	}
  
  	c.id = strings.TrimSpace(string(out))
  	vm.logPrintf("%s %s: %s", cmd.Path, cmd.Args, c.id)
  
  	if err = c.inspect(vm); err != nil {
  		log.Printf("%s inspect %s: %s", vm.Name, c.id, err)
  	}
  }
docs: // start runs the container if specified by the RUN.container extraConfig property.