docs: def build(self,
                name: str,
                force: bool = False,
                quiet: bool = False
                ) -> None:
          """
          Constructs a Docker image, given by its name, using the set of build
          instructions associated with that image.
  
          Parameters:
              name: the name of the Docker image.
              force: if `True`, the image will be rebuilt, regardless of whether
                  or not it is already installed on the server. If `False` and
                  a (possibly outdated) version of the image has already been
                  built, then the build will be skipped.
              quiet: used to enable and disable output from the Docker build
                  process.
          """
          logger.debug("request to build image: %s", name)
          instructions = self[name]
  
          if instructions.depends_on:
              logger.info("building dependent image: %s",
                          instructions.depends_on)
              self.build(instructions.depends_on, force=force, quiet=quiet)
  
          if not force and self.is_installed(instructions.name):
              return
  
          if not quiet:
              logger.info("building image: %s", name)
  
          context = instructions.abs_context
          tf = os.path.join(context, '.Dockerfile')
          try:
              success = False
              shutil.copy(instructions.filename_abs, tf)
              response = self.__docker.api.build(path=context,
                                                 dockerfile='.Dockerfile',
                                                 tag=name,
                                                 # pull=force,
                                                 buildargs=instructions.arguments,
                                                 decode=True,
                                                 rm=True)
  
              log = [] # type: List[str]
              for line in response:
                  if 'stream' in line:
                      line_msg = line['stream'].rstrip()
                      log.append(line_msg)
                      if not quiet:
                          print(line_msg)
                      if line_msg.startswith('Successfully built'):
                          success = True
  
              if not success:
                  raise ImageBuildFailed(name, log)
  
              if success and not quiet:
                  logger.info("built image: %s", name)
                  return
          finally:
              if os.path.exists(tf):
                  os.remove(tf)