diff --git a/cwltool/job.py b/cwltool/job.py index 6e841f64d..378d76d30 100644 --- a/cwltool/job.py +++ b/cwltool/job.py @@ -135,15 +135,22 @@ def run(self, dry_run=False, pull_image=True, rm_container=True, img_id = None env = None # type: Union[MutableMapping[Text, Text], MutableMapping[str, str]] - if docker_req and kwargs.get("use_container") is not False: - env = os.environ - img_id = docker.get_from_requirements(docker_req, docker_is_req, pull_image) - elif kwargs.get("default_container", None) is not None: - env = os.environ - img_id = kwargs.get("default_container") - - if docker_is_req and img_id is None: - raise WorkflowException("Docker is required for running this tool.") + try: + if docker_req and kwargs.get("use_container") is not False: + env = os.environ + img_id = docker.get_from_requirements(docker_req, True, pull_image) + elif kwargs.get("default_container", None) is not None: + env = os.environ + img_id = kwargs.get("default_container") + + if docker_req and img_id is None and kwargs.get("use_container"): + raise Exception("Docker image not available") + except Exception as e: + _logger.debug("Docker error", exc_info=True) + if docker_is_req: + raise WorkflowException("Docker is required to run this tool: %s" % e) + else: + raise WorkflowException("Docker is not available for this tool, try --no-container to disable Docker: %s" % e) if img_id: runtime = ["docker", "run", "-i"]