docs: Task getTaskSpecDockerDriver(Task task, String taskName, int containerIndex) {
  
      String executorBinary = Context.executorBinary(this.clusterConfig);
      // get arguments for heron executor command
      String[] executorArgs = SchedulerUtils.executorCommandArgs(
          this.clusterConfig, this.runtimeConfig, NomadConstants.EXECUTOR_PORTS,
          String.valueOf(containerIndex));
  
      // get complete heron executor command
      String executorCmd = executorBinary + " " + String.join(" ", executorArgs);
      // get heron_downloader command for downloading topology package
      String topologyDownloadCmd = getFetchCommand(this.clusterConfig,
          this.clusterConfig, this.runtimeConfig);
  
      task.setName(taskName);
      // use nomad driver
      task.setDriver(NomadConstants.NomadDriver.DOCKER.getName());
  
      // set docker image to use
      task.addConfig(NomadConstants.NOMAD_IMAGE,
          NomadContext.getHeronExecutorDockerImage(this.localConfig));
  
      task.addConfig(NomadConstants.NOMAD_TASK_COMMAND, NomadConstants.SHELL_CMD);
      task.addConfig(NomadConstants.NETWORK_MODE,
          NomadContext.getHeronNomadNetworkMode(this.localConfig));
  
      String setMetricsPortFileCmd = getSetMetricsPortFileCmd();
  
      String[] args = {"-c", String.format("%s && %s && %s",
          topologyDownloadCmd, setMetricsPortFileCmd, executorCmd)};
  
      task.addConfig(NomadConstants.NOMAD_TASK_COMMAND_ARGS, args);
  
      Map<String, String> envVars = new HashMap<>();
      envVars.put(NomadConstants.HOST, "${attr.unique.network.ip-address}");
      task.setEnv(envVars);
  
      return task;
    }