code: def save(self, chunk_size=DEFAULT_DATA_CHUNK_SIZE, named=False):
          
          img = self.id
          if named:
              img = self.tags[0] if self.tags else img
              if isinstance(named, six.string_types):
                  if named not in self.tags:
                      raise InvalidArgument(
                          "{} is not a valid tag for this image".format(named)
                      )
                  img = named
  
          return self.client.api.get_image(img, chunk_size)
docs: Get a tarball of an image. Similar to the ``docker save`` command.
  
          Args:
              chunk_size (int): The generator will return up to that much data
                  per iteration, but may return less. If ``None``, data will be
                  streamed as it is received. Default: 2 MB
              named (str or bool): If ``False`` (default), the tarball will not
                  retain repository and tag information for this image. If set
                  to ``True``, the first tag in the :py:attr:`~tags` list will
                  be used to identify the image. Alternatively, any element of
                  the :py:attr:`~tags` list can be used as an argument to use
                  that specific tag as the saved identifier.
  
          Returns:
              (generator): A stream of raw archive data.
  
          Raises:
              :py:class:`docker.errors.APIError`
                  If the server returns an error.
  
          Example:
  
              >>> image = cli.get_image("busybox:latest")
              >>> f = open('/tmp/busybox-latest.tar', 'wb')
              >>> for chunk in image:
              >>>   f.write(chunk)
              >>> f.close()