code: def create_job(self, job_spec):
      logger.debug("[docker]create_job: %s", job_spec)
      cwd = os.getcwd()
      volumes = {
          cwd: {"bind": cwd, "mode": "rw"},
          HOME_DIR: {"bind": HOME_DIR, "mode": "rw"},
      }
      debug = config.debug
  
      tty = debug
      stdin_open = debug
  
      if job_spec.image is None:
          image = config.default_image
      else:
          image = job_spec.image
  
      try:
          container = self.client.containers.run(
              image,
              job_spec.command,
              name=job_spec.name + "-" + str(uuid.uuid4()),
              volumes=volumes,
              cap_add=["SYS_PTRACE"],
              tty=tty,
              stdin_open=stdin_open,
              detach=True,
          )
      except docker.errors.ImageNotFound:
          raise mp.ProcessError(
              'Docker image "{}" not found or cannot be pulled from '
              "docker registry.".format(job_spec.image)
          )
  
      except docker.errors.APIError as e:
          raise mp.ProcessError(
              "Failed to start docker container: {}".format(e)
          )
  
      job = DockerJob(container, container.id)
      # delayed
      container._fiber_backend_reloading = False
      return job
  
imports: import logging
  import multiprocessing
  import os
  import sys
  import threading
  import time
  import uuid
  from os.path import expanduser
  import docker
  import psutil
  import requests
  import fiber
  import fiber.core
  import fiber.config
  from fiber.core import ProcessStatus
  from fiber.util import find_ip_by_net_interface, find_listen_address
label_desc: Use image node_id 2 for calling the Backend obj's underlying member method code with example usage: obj.create_job(job_spec) and returns: job