'Sets up an exec instance in a running container.
Args:
container (str): Target container where exec instance will be
created
cmd (str or list): Command to be executed
stdout (bool): Attach to stdout. Default: ``True``
stderr (bool): Attach to stderr. Default: ``True``
stdin (bool): Attach to stdin. Default: ``False``
tty (bool): Allocate a pseudo-TTY. Default: False
privileged (bool): Run as privileged.
user (str): User to execute command as. Default: root
environment (dict or list): A dictionary or a list of strings in
the following format ``["PASSWORD=xxx"]`` or
``{"PASSWORD": "xxx"}``.
Returns:
(dict): A dictionary with an exec ``Id`` key.
Raises:
:py:class:`docker.errors.APIError`
If the server returns an error.'

@utils.minimum_version('1.15')
@utils.check_resource('container')
def exec_create(self, container, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user='', environment=None):

    if (privileged and utils.version_lt(self._version, '1.19')):
        raise errors.InvalidVersion('Privileged    exec    is    not    supported    in    API    <    1.19')
    if (user and utils.version_lt(self._version, '1.19')):
        raise errors.InvalidVersion('User-specific    exec    is    not    supported    in    API    <    1.19')
    if ((environment is not None) and utils.version_lt(self._version, '1.25')):
        raise errors.InvalidVersion('Setting    environment    for    exec    is    not    supported    in    API    <    1.25')
    if isinstance(cmd, six.string_types):
        cmd = utils.split_command(cmd)
    if isinstance(environment, dict):
        environment = utils.utils.format_environment(environment)
    data = {'Container': container, 'User': user, 'Privileged': privileged, 'Tty': tty, 'AttachStdin': stdin, 'AttachStdout': stdout, 'AttachStderr': stderr, 'Cmd': cmd, 'Env': environment}
    url = self._url('/containers/{0}/exec', container)
    res = self._post_json(url, data=data)
    return self._result(res, True)
