code: def docker_call(work_dir, tool_parameters, tool, java_opts=None, outfile=None, sudo=False):
      
      base_docker_call = 'docker run --log-driver=none --rm -v {}:/data'.format(work_dir).split()
      if sudo:
          base_docker_call = ['sudo'] + base_docker_call
      if java_opts:
          base_docker_call = base_docker_call + ['-e', 'JAVA_OPTS={}'.format(java_opts)]
      try:
          if outfile:
              subprocess.check_call(base_docker_call + [tool] + tool_parameters, stdout=outfile)
          else:
              subprocess.check_call(base_docker_call + [tool] + tool_parameters)
      except subprocess.CalledProcessError:
          raise RuntimeError('docker command returned a non-zero exit status. Check error logs.')
      except OSError:
          raise RuntimeError('docker not found on system. Install on all nodes.')
docs: Makes subprocess call of a command to a docker container.
  
  
      tool_parameters: list   An array of the parameters to be passed to the tool
      tool: str               Name of the Docker image to be used (e.g. quay.io/ucsc_cgl/samtools)
      java_opts: str          Optional commands to pass to a java jar execution. (e.g. '-Xmx15G')
      outfile: file           Filehandle that stderr will be passed to
      sudo: bool              If the user wants the docker command executed as sudo