WSL2 启动即崩溃?调整超时参数解决 Docker 阻塞问题

前面一片文章给出了因WSL 2.7+ 空闲自动关闭/内存回收导致 Docker 中断的解决方案:

https://blog.csdn.net/boxuming/article/details/165619884?spm=1001.2014.3001.5501

本次又遇到了新的问题:

问题现象

WSL2 Ubuntu 24.04 实例开机后数秒内自动关闭,无法进入 Shell。查看日志发现两个关键错误形成闭环:

text 复制代码
[16.628768] WSL ERROR: WaitForBootProcess: /sbin/init failed to start within 10000ms
[35.321104] WSL ERROR: InitTerminateInstanceInternal: systemctl poweroff did not terminate the instance in 10000 ms, calling reboot(RB_POWER_OFF)
根因分析
  • 启动阻塞 :日志显示 Job docker.service/start running (14s / no limit),Docker 与 containerd 初始化耗时超过 10 秒,阻塞了 systemd 的就绪信号。
  • 关机卡死 :触发强制关机后,容器停止流程再次挂起(Job docker.service/stop running (9s / 1min 30s)),导致关机也超时,最终被内核级强杀。
  • 触发背景:此前将配置从 12C/8G 调整为 8C/6G,资源回调使 Docker 冷启动时间略微增加,刚好越过了 WSL2 默认的 10 秒硬超时阈值,让原本隐藏的超时问题显性化。
解决方案

以下两种方法任选其一即可,效果完全等价:

方法一:通过 Dashboard UI 调整(推荐)

在 WSL Dashboard 界面中,将 初始自动代理超时 从默认的 1000ms 调整为 30000ms

方法二:通过 .wslconfig 配置文件调整

编辑 Windows 用户目录下的 %UserProfile%\.wslconfig 文件,添加或修改以下配置:

ini 复制代码
[wsl2]
initialAutoProxyTimeout=30000

⚠️ 无论使用哪种方法,修改后均需在 PowerShell 中执行 wsl --shutdown 彻底关闭 WSL,再重新启动方可生效。

验证效果

重启 WSL 后能够正常进入 Shell,不再出现启动即崩溃的现象,Docker 服务也可正常拉起。

经验总结
  • WSL2 默认的 10 秒超时是开发环境的隐形杀手,搭配 Docker 使用时极易触发,建议主动将超时调整为 30 秒。
  • 适度降低资源配置有助于暴露架构瓶颈,但需配合超时参数调整才能保证稳定运行。
  • Dashboard UI 与 .wslconfig 配置效果一致,可根据个人习惯选择;UI 方式更直观不易出错,配置文件方式更适合批量部署或版本管理。
相关推荐
web守墓人2 小时前
【goed/ui】自定义组件设计思想篇
linux·windows·ui·golang
kuroomi2 小时前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
daemon.qiang2 小时前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
一直在努力学习的菜鸟3 小时前
Docker 完整知识体系图
docker
2401_869769594 小时前
linux 权限 指令与权限(重启之后)
linux
码农客栈4 小时前
Linux CAN 驱动
linux·驱动开发
GeW5 小时前
红帽RHCE从挂科边缘到一次过,我做对了什么
linux
时空自由民.5 小时前
WSL解决USB 串口连接问题与linux串口权限问题
linux·单片机
OpenPomeloxCommunity6 小时前
Linux驱动基础(三):firmware的声明与加载
linux·操作系统