code: func NewNamer(ctx context.Context, client client.ContainerAPIClient, project, service string, oneOff bool) (Namer, error) {
  	namer := &defaultNamer{
  		project: project,
  		service: service,
  		oneOff:  oneOff,
  	}
  
  	filter := filters.NewArgs()
  	filter.Add("label", fmt.Sprintf("%s=%s", labels.PROJECT.Str(), project))
  	filter.Add("label", fmt.Sprintf("%s=%s", labels.SERVICE.Str(), service))
  	if oneOff {
  		filter.Add("label", fmt.Sprintf("%s=%s", labels.ONEOFF.Str(), "True"))
  	} else {
  		filter.Add("label", fmt.Sprintf("%s=%s", labels.ONEOFF.Str(), "False"))
  	}
  
  	containers, err := client.ContainerList(ctx, types.ContainerListOptions{
  		All:     true,
  		Filters: filter,
  	})
  	if err != nil {
  		return nil, err
  	}
  
  	maxNumber := 0
  	for _, container := range containers {
  		number, err := strconv.Atoi(container.Labels[labels.NUMBER.Str()])
  		if err != nil {
  			return nil, err
  		}
  		if number > maxNumber {
  			maxNumber = number
  		}
  	}
  	namer.currentNumber = maxNumber + 1
  
  	return namer, nil
  }
docs: // NewNamer returns a namer that returns names based on the specified project and
  // service name and an inner counter, e.g. project_service_1, project_service_2…