From 627209de66b37e203f67aa829231db543cb4a1e9 Mon Sep 17 00:00:00 2001 From: Adar Nimrod Date: Sat, 22 May 2021 13:13:33 +0300 Subject: [PATCH] A more reliable way to get the container id. The hostname is not always the container id. Get the container id from /proc/1/cgroup. Fixes #1918. --- pre_commit/languages/docker.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pre_commit/languages/docker.py b/pre_commit/languages/docker.py index 5b21ec94c..1618dfc34 100644 --- a/pre_commit/languages/docker.py +++ b/pre_commit/languages/docker.py @@ -1,7 +1,6 @@ import hashlib import json import os -import socket from typing import Sequence from typing import Tuple @@ -29,9 +28,11 @@ def _is_in_docker() -> bool: def _get_docker_path(path: str) -> str: if not _is_in_docker(): return path - hostname = socket.gethostname() + container_id = os.path.basename( + open('/proc/1/cgroup').readlines()[0], + ).strip() - _, out, _ = cmd_output_b('docker', 'inspect', hostname) + _, out, _ = cmd_output_b('docker', 'inspect', container_id) container, = json.loads(out) for mount in container['Mounts']: