code: def image_by_name(img_name, images=None):
      
      i_reg, i_rep, i_tag = _decompose(img_name)
  
      # Correct for bash-style matching expressions.
      if not i_reg:
          i_reg = '*'
      if not i_tag:
          i_tag = '*'
  
      # If the images were not passed in, go get them.
      if images is None:
          c = docker.Client(**kwargs_from_env())
          images = c.images(all=False)
  
      valid_images = []
      for i in images:
          for t in i['RepoTags']:
              reg, rep, tag = _decompose(t)
              if matches(reg, i_reg) \
                      and matches(rep, i_rep) \
                      and matches(tag, i_tag):
                  valid_images.append(i)
                  break
              # Some repo after decompose end up with the img_name
              # at the end.  i.e. rhel7/rsyslog
              if rep.endswith(img_name):
                  valid_images.append(i)
                  break
      return valid_images
docs: Returns a list of image data for images which match img_name. Will
      optionally take a list of images from a docker.Client.images
      query to avoid multiple docker queries.