code: def parseDockerAppliance(appliance):
      
      appliance = appliance.lower()
  
      # get the tag
      if ':' in appliance:
          tag = appliance.split(':')[-1]
          appliance = appliance[:-(len(':' + tag))] # remove only the tag
      else:
          # default to 'latest' if no tag is specified
          tag = 'latest'
  
      # get the registry and image
      registryName = 'docker.io' # default if not specified
      imageName = appliance # will be true if not specified
      if '/' in appliance and '.' in appliance.split('/')[0]:
          registryName = appliance.split('/')[0]
          imageName = appliance[len(registryName):]
      registryName = registryName.strip('/')
      imageName = imageName.strip('/')
  
      return registryName, imageName, tag
docs: Takes string describing a docker image and returns the parsed
      registry, image reference, and tag for that image.
  
      Example: "quay.io/ucsc_cgl/toil:latest"
      Should return: "quay.io", "ucsc_cgl/toil", "latest"
  
      If a registry is not defined, the default is: "docker.io"
      If a tag is not defined, the default is: "latest"
  
      :param appliance: The full url of the docker image originally
                        specified by the user (or the default).
                        e.g. "quay.io/ucsc_cgl/toil:latest"
      :return: registryName, imageName, tag