'Create and register a named volume
Args:
name (str): Name of the volume
driver (str): Name of the driver used to create the volume
driver_opts (dict): Driver options as a key-value dictionary
labels (dict): Labels to set on the volume
Returns:
(dict): The created volume reference object
Raises:
:py:class:`docker.errors.APIError`
If the server returns an error.
Example:
>>> volume = cli.create_volume(name=\'foobar\', driver=\'local\',
driver_opts={\'foo\': \'bar\', \'baz\': \'false\'},
labels={"key": "value"})
>>> print(volume)
{u\'Driver\': u\'local\',
u\'Labels\': {u\'key\': u\'value\'},
u\'Mountpoint\': u\'/var/lib/docker/volumes/foobar/_data\',
u\'Name\': u\'foobar\',
u\'Scope\': u\'local\'}'

@utils.minimum_version('1.21')
def create_volume(self, name=None, driver=None, driver_opts=None, labels=None):

    url = self._url('/volumes/create')
    if ((driver_opts is not None) and (not isinstance(driver_opts, dict))):
        raise TypeError('driver_opts    must    be    a    dictionary')
    data = {'Name': name, 'Driver': driver, 'DriverOpts': driver_opts}
    if (labels is not None):
        if (utils.compare_version('1.23', self._version) < 0):
            raise errors.InvalidVersion('volume    labels    were    introduced    in    API    1.23')
        if (not isinstance(labels, dict)):
            raise TypeError('labels    must    be    a    dictionary')
        data['Labels'] = labels
    return self._result(self._post_json(url, data=data), True)
