code: func (v *Volume) EnsureItExists(ctx context.Context) error {
  	volumeResource, err := v.Inspect(ctx)
  	if v.external {
  		if client.IsErrNotFound(err) {
  			// FIXME(shouze) introduce some libcompose error type
  			return fmt.Errorf("Volume %s declared as external, but could not be found. Please create the volume manually using docker volume create %s and try again", v.name, v.name)
  		}
  		return err
  	}
  	if err != nil && client.IsErrNotFound(err) {
  		return v.create(ctx)
  	}
  	if volumeResource.Driver != v.driver {
  		return fmt.Errorf("Volume %q needs to be recreated - driver has changed", v.name)
  	}
  	return err
  }
docs: // EnsureItExists make sure the volume exists and return an error if it does not exists
  // and cannot be created.