code: func (p *LogsPump) Run() error {
  	inactivityTimeout := getInactivityTimeoutFromEnv()
  	debug("pump.Run(): using inactivity timeout: ", inactivityTimeout)
  
  	containers, err := p.client.ListContainers(docker.ListContainersOptions{})
  	if err != nil {
  		return err
  	}
  	for _, listing := range containers {
  		p.pumpLogs(&docker.APIEvents{
  			ID:     normalID(listing.ID),
  			Status: "start",
  		}, false, inactivityTimeout)
  	}
  	events := make(chan *docker.APIEvents)
  	err = p.client.AddEventListener(events)
  	if err != nil {
  		return err
  	}
  	for event := range events {
  		debug("pump.Run() event:", normalID(event.ID), event.Status)
  		switch event.Status {
  		case "start", "restart":
  			go p.pumpLogs(event, backlog(), inactivityTimeout)
  		case "rename":
  			go p.rename(event)
  		case "die":
  			go p.update(event)
  		}
  	}
  	return errors.New("docker event stream closed")
  }
docs: // Run executes the pump