Docker启动失败问题排查(一)

简介: 新公司切换至Windows环境后,Docker频繁启动失败,表现为引擎停止且图标无限加载。通过日志排查发现,问题源于Windows复杂网络配置导致Docker判断异常。最终通过分析`host`与`vm`目录下核心日志,定位并解决了网络服务初始化冲突问题。

换了一家公司,新公司的网络环境只支持Windows,于是从Mac切换到了Windows。由此遇到了很多很多的问题,在此记录一些比较典型的问题。

问题背景

每一次重启电脑,Docker重新打开时,都会失败,具体表现为Docker界面显示Docker Engine stopped,右下角Docker的小图标则显示为一个鲸鱼不停的跳动,为加载状态,此时如果点击退出也会卡住,只能通过任务管理器的形式杀掉Docker进程。在第一次杀掉Docker进程后,后续启动都能成功。

Docker启动失败问题排查- Docker启动失败2.png

由于比较忙的原因,每次我都是直接杀掉Docker进程再重新启动,以此来快速解决这个问题。偶然的情况下,我发现在【网络和Intel设置 - 高级设置】菜单中,禁用当前网卡再重启,Docker也随之完成了启动,即使当前界面显示的是Docker is stopped

由此,初步判断,问题原因应该是Windows下有线网/无线网/WSL/Hyper-V等杂乱的网络配置导致Docker的网络判断逻辑失败。

最近有了一些空闲,准备腾出手好好解决这个问题。

解决方案

遇到软件问题,首先要想办法排查日志的问题。

查看Docker日志

Docker日志的路径在C:\Users\你的用户名\AppData\Local\Docker\log路径下,可以在PowerShell中使用命令code $Env:LOCALAPPDATA\Docker\log使用vscode快速打开log文件夹。

可以在文件夹中看到很多的日志文件,我将它们大体整理了一下(整理过程可见附录),得到的结果如下:

各目录的主要作用:

目录 作用说明
host Windows 主机侧组件的日志。主要记录Docker Desktop 应用程序自身(Electron UI、后台守护进程、代理进程、VPNKit、扩展框架等)的运行情况。
vm LinuxKit VM / WSL2 内部日志。相当于 Docker Desktop 启动的轻量 Linux 虚拟机,里面跑的就是dockerd、containerd、网络、DNS、时间同步等核心服务。如果 Docker Daemon 没起来,关键日志在这里。
host\electron-crash-reports Docker Desktop的UI层使用了electron框架,这个文件夹中就存放electron框架错误日志。

host目录下各日志文件的作用:

文件名 作用
.327f22648f3979bb4480e4e0a1189d37a8110fb3-audit.json 审计事件记录,用于追溯设置变更或关键操作。
com.docker.admin.exe.log 记录与 Docker Desktop 管理员权限相关的操作。
com.docker.backend.exe.log 核心后端服务日志,负责协调虚拟机、WSL、文件共享和网络等。这是首次启动失败或核心功能异常时首要的排查文件。
com.docker.build.exe.stdout.log / stderr.log 记录镜像构建过程中的标准输出和错误输出。在镜像构建失败或卡住时应查看。
com.docker.dev-envs.exe.stdout.log / stderr.log 记录 Docker 开发环境(Dev Environments)功能的标准输出和错误输出。在创建或同步开发环境时遇到问题可查看。
com.docker.diagnose.exe.log 诊断工具日志,用于记录在运行 Troubleshoot 或打包诊断包时的自检结果和问题。
com.docker.extensions.exe.log / stdout.log / stderr.log 记录 Docker 扩展框架的日志,包括标准输出和错误输出。扩展安装或运行失败时需检查。
com.docker.proxy.exe.log / stdout.log / stderr.log 主机与虚拟机/WSL 之间的网络代理进程日志,处理 API 和端口转发。网络不通或守护进程通信失败时,这些文件提供重要线索。
com.docker.wsl-distro-proxy.exe.log 记录与 WSL 发行版通信的代理日志。WSL 启动缓慢或出现异常时,可在此处找到线索。
Docker Desktop.exe.stdout.log / stderr.log Docker Desktop GUI 主程序的标准输出和错误输出。若界面白屏、无法打开或交互异常,可查看。
docker.exe.stdout.log / stderr.log 记录 Docker 命令行工具(CLI)的标准输出和错误输出。
electron-*.log 记录基于 Electron 框架的 GUI 界面运行日志,按时间滚动。用于排查界面崩溃、渲染异常或与后端通信失败的问题。
httpproxy.log 记录内置 HTTP 代理的日志。若扩展市场加载失败或内置 API 调用超时,可在此处查看。
ipc.stacks.log 记录进程间通信(IPC)的堆栈快照,通常在检测到死锁或阻塞时生成。可用于排查应用卡死的问题。
monitor.log 记录后台健康监控和“看门狗”服务日志。若核心组件反复崩溃并重启,此处会记录重启的原因和次数。
vpnkit-bridge.exe.log / stdout.log / stderr.log 记录 VPNKit 网络桥的日志,负责容器的 NAT、DNS 和端口映射。当容器网络出现问题时,这是主要排查文件。

vm目录下各文件的作用:

文件名 作用
01-docker.log* 记录 Docker 服务在 VM 启动初期的运行情况(init 阶段的 docker 日志)。
acpid*.log ACPI 电源管理相关日志,记录关机、休眠、设备电源事件。
allowlist.log 管理和校验 VM 内允许的组件或访问规则。
artifactory.out.log 与内部仓库/依赖缓存相关的服务日志。
binfmt*.log Linux binfmt_misc 机制日志,用于在 VM 内运行多架构镜像。
container-filesystem*.log 容器文件系统的挂载、检测与错误记录。
containerd*.log Containerd 守护进程日志,管理容器生命周期。
devenv-service*.log 开发环境辅助服务日志,相关功能启动/停止记录。
devenv.log 开发环境相关操作记录。
diagnosticsd*.log Docker Desktop 的诊断服务日志。
dns-forwarder*.log VM 内 DNS 转发服务日志。
dns.log DNS 解析结果和错误日志。
docker*.log Docker 守护进程核心日志,记录容器与镜像管理。
dockerd.log Dockerd 守护进程单独日志,容器运行核心进程。
http-proxy.log VM 内 HTTP 代理服务日志,常用于拉取镜像时的代理转发。
init.log VM 初始化过程日志。
kmsg*.log Linux 内核消息缓冲区日志,系统级事件(驱动、内核警告)。
memlogd.log 内存日志管理,可能是轻量级日志收集服务。
nat*.log VM 内 NAT 网络转发日志。
nfs-common*.log NFS 文件共享相关日志。
onboot.*.log VM 启动阶段的初始化任务日志,涵盖 sysctl、元数据、服务启动、网络配置等。
procd*.log 进程管理服务日志,类似 init/systemd。
rpcbind*.log RPC 端口映射服务日志,文件共享和远程调用相关。
sntpc*.log SNTP 时间同步日志。
socks*.log SOCKS5 代理日志。
stargz-snapshotter.log stargz 快速镜像分层加载器日志。
syn-filter.log TCP SYN 过滤日志,网络安全相关。
trim-after-delete.log 磁盘空间回收(TRIM 操作)相关日志。
volume-contents*.log 容器卷挂载内容的检查与日志。
vpnkit-forwarder.log VPNKit 网络转发服务日志。
vpnkit-tap-vsockd.log VPNKit TAP/VSock 守护进程日志,处理 VM 与宿主机之间的网络通信。
目录
相关文章
|
4月前
|
人工智能 开发框架 自然语言处理
智能体来了!智能体教育新纪元:从黎跃春的智能体开发实训,看AI人才培养的未来路径
智能体时代来临,AI教育迈向“系统智能”新阶段。从零基础入门到项目实训,再到产教融合,培养具备AI思维与实战能力的创新型人才,推动教育与产业双向奔赴。
|
5月前
|
人工智能 Ubuntu 数据可视化
【详细教程】如何在Ubuntu上本地部署Dify?
Dify 是一个开源的大语言模型应用开发平台,支持低代码/无代码开发,提供多模型接入、Agent框架、RAG检索增强生成等功能,助力快速构建AI应用。支持本地部署,提供详尽文档与可视化界面,适用于聊天助手、文本生成、自动化任务等多种场景。
4235 124
|
3月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
25214 10
|
5月前
|
人工智能 Ubuntu API
从零开始:在Ubuntu上快速部署Docker和Dify
本文介绍了如何在 Ubuntu 环境下通过阿里云镜像快速安装 Docker 与 Docker Compose,并部署 Dify 智能应用平台。结合蓝耘 MaaS 平台 API,实现大模型高效接入,帮助开发者快速构建 AI 应用,提升开发效率与使用体验。
2061 8
|
7月前
|
人工智能 缓存 数据可视化
手把手玩转本地大模型:Ollama+DeepSeek+Dify 零门槛全流程指南
本文提供从零搭建本地AI工作站的完整指南,详解本地化部署大模型的核心优势(数据隐私/离线可用/成本可控),涵盖Ollama安装、DeepSeek-Coder模型部署、Dify可视化操作及API调用实战,助你打造安全高效的私有AI开发环境。
|
小程序 前端开发 API
【微信小程序】TypeError: Cannot read property ‘get‘ of undefined & Error: MiniProgramError
【微信小程序】TypeError: Cannot read property ‘get‘ of undefined & Error: MiniProgramError
|
11月前
|
固态存储 安全 测试技术
别再用盗版镜像了!官方渠道获取Win10 ISO+VMware正版激活全流程
本文详细介绍了在VMware虚拟机上安装Windows 10系统的全流程,涵盖环境准备、虚拟机配置、系统安装及优化等关键步骤。内容包括软件资源获取(如VMware与Win10镜像下载链接)、硬件要求核查、虚拟机创建与参数设置(如UEFI/BIOS选择、处理器与内存分配),以及系统安装中的具体操作和常见问题解决方法。此外,还提供了性能调优方案(如显卡加速、快照管理)和高频问题解决方案,确保用户避开常见坑点。最后附有配套资源包和数据验证结果,帮助用户高效完成搭建并提升使用体验。
11885 17
|
Linux 网络安全 Docker
安装后无法使用 Docker 命令
【10月更文挑战第3天】
1627 2