Handle the non-root perms case specifically too
							parent
							
								
									8f22ccd5ef
								
							
						
					
					
						commit
						d6ffe1ba7a
					
				|  | @ -23,7 +23,6 @@ from typing import ( | |||
|     # Any, | ||||
| ) | ||||
| from contextlib import asynccontextmanager as acm | ||||
| from requests.exceptions import ConnectionError | ||||
| # import time | ||||
| 
 | ||||
| import trio | ||||
|  | @ -32,6 +31,8 @@ import tractor | |||
| import docker | ||||
| import json | ||||
| from docker.models.containers import Container | ||||
| from docker.errors import DockerException | ||||
| from requests.exceptions import ConnectionError | ||||
| 
 | ||||
| from ..log import get_logger  # , get_console_log | ||||
| from ..config import _config_dir | ||||
|  | @ -87,20 +88,27 @@ async def open_docker( | |||
| 
 | ||||
| ) -> docker.DockerClient: | ||||
| 
 | ||||
|     client: Optional[docker.DockerClient] = None | ||||
|     try: | ||||
|         client = docker.DockerClient( | ||||
|             base_url=url, | ||||
|             **kwargs | ||||
|         ) if url else docker.from_env(**kwargs) | ||||
|     except ( | ||||
|         ConnectionError, | ||||
|         docker.errors.DockerException, | ||||
|     ): | ||||
|         yield client | ||||
|     except ConnectionError: | ||||
|         # prolly no daemon started | ||||
|         raise DockerNotStarted('!?!?') | ||||
| 
 | ||||
|     try: | ||||
|         yield client | ||||
|     except DockerException as err: | ||||
|         # could be more specific so let's check if it's just perms. | ||||
|         if 'PermissionError' in err.args[0]: | ||||
|             raise DockerException('You dint run as root yo!') | ||||
| 
 | ||||
|         # not perms? | ||||
|         raise | ||||
| 
 | ||||
|     finally: | ||||
|         if client: | ||||
|             # for c in client.containers.list(): | ||||
|             #     c.kill() | ||||
|             client.close() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue