'Launch a docker image.
:type image: str
:param image: Optional image name. If not provided, self.default_image
is used, which is the first image listed in the
allowed_images.yml{,.sample} file.
:type additional_ids: str
:param additional_ids: comma separated list of encoded HDA IDs. These
are transformed into Volumes and added to that
argument
:type env_override: dict
:param env_override: dictionary of environment variables to add.
:type volumes: list of galaxy.tools.deps.docker_util.DockerVolume
:param volumes: dictionary of docker volume mounts'

def launch(self, image=None, additional_ids=None, env_override=None, volumes=None):

    if (volumes is None):
        volumes = []
    if (image is None):
        image = self.default_image
    if (image not in self.allowed_images):
        raise Exception(('Attempting    to    launch    disallowed    image!    %s    not    in    list    of    allowed    images    [%s]' % (image, ',    '.join(self.allowed_images))))
    if (not volumes):
        volumes = []
    if (additional_ids is not None):
        volumes += self._idsToVolumes(additional_ids)
    if (self.attr.container_interface is None):
        self._launch_legacy(image, env_override, volumes)
    else:
        self._launch_container_interface(image, env_override, volumes)
