From 0e3d95cac0a657a785b962fe2a94c99b330f6d5d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 9 Sep 2020 16:25:18 +0200 Subject: [PATCH] Make docker cleanup more robust for overlayfs issues (#2033) * Make docker cleanup more robust for overlayfs issues * it's an issue * more decent handling --- supervisor/docker/interface.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/supervisor/docker/interface.py b/supervisor/docker/interface.py index f387b84bc..fffc9e03e 100644 --- a/supervisor/docker/interface.py +++ b/supervisor/docker/interface.py @@ -334,7 +334,13 @@ class DockerInterface(CoreSysAttributes): raise DockerAPIError() from err # Cleanup Current - for image in self.sys_docker.images.list(name=self.image): + try: + images_list = self.sys_docker.images.list(name=self.image) + except (docker.errors.DockerException, requests.RequestException) as err: + _LOGGER.waring("Corrupt docker overlayfs found: %s", err) + raise DockerAPIError() from err + + for image in images_list: if origin.id == image.id: continue @@ -346,7 +352,13 @@ class DockerInterface(CoreSysAttributes): if not old_image or self.image == old_image: return - for image in self.sys_docker.images.list(name=old_image): + try: + images_list = self.sys_docker.images.list(name=old_image) + except (docker.errors.DockerException, requests.RequestException) as err: + _LOGGER.waring("Corrupt docker overlayfs found: %s", err) + raise DockerAPIError() from err + + for image in images_list: with suppress(docker.errors.DockerException, requests.RequestException): _LOGGER.info("Cleanup images: %s", image.tags) self.sys_docker.images.remove(image.id, force=True)