docs: def stdio(containerizer, *args):
      """Connect containerizer class to command line args and STDIN
  
      Dispatches to an appropriate containerizer method based on the first
      argument and parses the input using an appropriate Protobuf type.
  
          launch < containerizer::Launch
          update < containerizer::Update
          usage < containerizer::Usage > mesos::ResourceStatistics
          wait < containerizer::Wait > containerizer::Termination
          destroy < containerizer::Destroy
          containers > containerizer::Containers
          recover
  
      Output serialization must be handled by the containerizer method (it
      doesn't necessarily happen at the end).
  
      Not really part of the containerizer protocol but exposed by Deimos as a
      subcommand:
  
          # Follows a Docker ID, PID, &c and exits with an appropriate, matching
          # exit code, in a manner specific to the containerizer
          observe <id>
  
      """
      try:
          name = args[0]
          method, proto = {"launch": (containerizer.launch, Launch),
                            "update": (containerizer.update, Update),
                            "usage": (containerizer.usage, Usage),
                            "wait": (containerizer.wait, Wait),
                            "destroy": (containerizer.destroy, Destroy),
                            "containers": (containerizer.containers, None),
                            "recover": (containerizer.recover, None),
                            "observe": (containerizer.observe, None)}[name]
      except IndexError:
          raise Err("Please choose a subcommand")
      except KeyError:
          raise Err("Subcommand %s is not valid for containerizers" % name)
      log.debug("%r", (method, proto))
      if proto is not None:
          return method(recordio.read(proto), *args[1:])
      else:
          return method(*args[1:])