docs: def _run(self, bundle,
                 container_id=None,
                 empty_process=False,
                 log_path=None,
                 pid_file=None,
                 sync_socket=None,
                 command="run",
                 log_format="kubernetes"): 
  
      ''' _run is the base function for run and create, the only difference
          between the two being that run does not have an option for sync_socket.
  
          Equivalent command line example:      
             singularity oci create [create options...] <container_ID>
  
          Parameters
          ==========
          bundle: the full path to the bundle folder
          container_id: an optional container_id. If not provided, use same
                        container_id used to generate OciImage instance
          empty_process: run container without executing container process (for
                         example, for a pod container waiting for signals). This
                         is a specific use case for tools like Kubernetes
          log_path: the path to store the log.
          pid_file: specify the pid file path to use
          sync_socket: the path to the unix socket for state synchronization.
          command: the command (run or create) to use (default is run)
          log_format: defaults to kubernetes. Can also be "basic" or "json"
      '''
      container_id = self.get_container_id(container_id)
  
      # singularity oci create
      cmd = self._init_command(command)
  
      # Check that the bundle exists
      if not os.path.exists(bundle):
          bot.exit('Bundle not found at %s' % bundle)
  
      # Add the bundle
      cmd = cmd + ['--bundle', bundle]
  
      # Additional Logging Files
      cmd = cmd + ['--log-format', log_format]
  
      if log_path != None:
          cmd = cmd + ['--log-path', log_path]
      if pid_file != None:
          cmd = cmd + ['--pid-file', pid_file]
      if sync_socket != None:
          cmd = cmd + ['--sync-socket', sync_socket]
      if empty_process:
          cmd.append('--empty-process')
  
      # Finally, add the container_id
      cmd.append(container_id)
  
      # Generate the instance
      result = self._send_command(cmd, sudo=True)
  
      # Get the status to report to the user!
      # TODO: Singularity seems to create even with error, can we check and
      # delete for the user if this happens?
      return self.state(container_id, sudo=True, sync_socket=sync_socket)