diff --git a/modules/docker.py b/modules/docker.py index 8addfd7..2eb18ac 100644 --- a/modules/docker.py +++ b/modules/docker.py @@ -20,6 +20,10 @@ class DockerModule(Module): return {"docker.socket"} def after_update(self, store): + self._ensure_user_in_docker_group() + self._disable_networkd_wait_online() + + def _ensure_user_in_docker_group(self): result = subprocess.run( ["id", "-nG", self.user], capture_output=True, text=True ) @@ -27,3 +31,14 @@ class DockerModule(Module): return if "docker" not in result.stdout.split(): decman.prg(["gpasswd", "-a", self.user, "docker"]) + + def _disable_networkd_wait_online(self): + # systemd-networkd-wait-online.service 会阻塞 network-online.target + # 直到所有 link ready 或 120s 超时,导致 docker.service 启动卡约两分钟 + result = subprocess.run( + ["systemctl", "is-enabled", "systemd-networkd-wait-online.service"], + capture_output=True, + text=True, + ) + if result.stdout.strip() == "enabled": + decman.prg(["systemctl", "disable", "systemd-networkd-wait-online.service"])