Handle the non-root perms case specifically too

marketstore
Tyler Goodlet 2022-02-17 13:45:40 -05:00
parent 8f22ccd5ef
commit d6ffe1ba7a
1 changed files with 19 additions and 11 deletions

View File

@ -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()