code: func (s *VolumesService) Create(ctx context.Context, name, driverName string, opts ...opts.CreateOption) (*types.Volume, error) {
  	if name == "" {
  		name = stringid.GenerateNonCryptoID()
  	}
  	v, err := s.vs.Create(ctx, name, driverName, opts...)
  	if err != nil {
  		return nil, err
  	}
  
  	s.eventLogger.LogVolumeEvent(v.Name(), "create", map[string]string{"driver": v.DriverName()})
  	apiV := volumeToAPIType(v)
  	return &apiV, nil
  }
docs: // Create creates a volume
  // If the caller is creating this volume to be consumed immediately, it is
  // expected that the caller specifies a reference ID.
  // This reference ID will protect this volume from removal.
  //
  // A good example for a reference ID is a container's ID.
  // When whatever is going to reference this volume is removed the caller should defeference the volume by calling `Release`.