code: func (v *Vibranium) ReplaceContainer(opts *pb.ReplaceOptions, stream pb.CoreRPC_ReplaceContainerServer) error {
  	v.taskAdd("ReplaceContainer", true)
  	defer v.taskDone("ReplaceContainer", true)
  
  	replaceOpts, err := toCoreReplaceOptions(opts)
  	if err != nil {
  		return err
  	}
  
  	//这里考虑用全局 Background
  	ch, err := v.cluster.ReplaceContainer(context.Background(), replaceOpts)
  	if err != nil {
  		return err
  	}
  
  	for m := range ch {
  		if err = stream.Send(toRPCReplaceContainerMessage(m)); err != nil {
  			v.logUnsentMessages("ReplaceContainer", m)
  		}
  	}
  
  	return cleanDeployOptionsDataFile(&replaceOpts.DeployOptions)
  }
docs: // ReplaceContainer replace containers