code: def _build(self, build_method):
          
          logger.info("building image '%s'", self.image)
          self.ensure_not_built()
          self.temp_dir = tempfile.mkdtemp()
          temp_path = os.path.join(self.temp_dir, BUILD_JSON)
          try:
              with open(temp_path, 'w') as build_json:
                  json.dump(self.build_args, build_json)
              self.build_container_id = build_method(self.build_image, self.temp_dir)
              try:
                  logs_gen = self.dt.logs(self.build_container_id, stream=True)
                  wait_for_command(logs_gen)
                  return_code = self.dt.wait(self.build_container_id)
              except KeyboardInterrupt:
                  logger.info("killing build container on user's request")
                  self.dt.remove_container(self.build_container_id, force=True)
                  results = BuildResults()
                  results.return_code = 1
                  return results
              else:
                  results = self._load_results(self.build_container_id)
                  results.return_code = return_code
                  return results
          finally:
              shutil.rmtree(self.temp_dir)
docs: build image from provided build_args
  
          :return: BuildResults