【踩坑记录】Docker Desktop 启动卡死修复  本地 MySQL/Redis 极速迁移 Docker 实战 前言最近在开发一个前后端分离项目前端Vue 3后端.NET 10 ABP 9。目前刚做完用户登录和前后端联调。为了让本地开发环境更加整洁我决定将本地原本运行的MySQL和Redis迁移到Docker容器中运行。在配置和安装过程中遇到了一些由于环境冲突和粗心导致的“小插曲”特此整理记录希望能给遇到类似问题的同学提供参考。一、 解决 Docker Desktop 启动无限转圈问题1. 现象首次运行 Docker Desktop 时界面一直卡在 Starting the Docker Engine... 循环转圈。在任务管理器里结束它后台服务又会自动把它拉起来。2. 原因与解决这大概率是由于上一次安装过程中某些底层组件损坏或配置冲突导致的。仅仅卸载重装由于残留数据的存在往往不起作用。解决步骤停止后台自动拉起以管理员身份运行 CMD停止服务并强制杀死进程codeCmdnet stop com.docker.service taskkill /F /IM Docker Desktop.exe taskkill /F /IM com.docker.backend.exe wsl --shutdown清理卸载残留防止再次继承错误环境在控制面板卸载 Docker 后去手动删除以下三个残留文件夹C:\Users\用户名\.dockerC:\Users\用户名\AppData\Local\Docker旧虚拟磁盘的藏身处务必删除C:\Users\用户名\AppData\Roaming\Docker彻底注销旧虚拟机分发在 CMD 中执行抹掉旧的容器系统残留codeCmdwsl --unregister docker-desktop wsl --unregister docker-desktop-data升级底层的 WSL 组件执行命令将 WSL 升级到最新的 2.7.8 版本codeCmdwsl --update纯净重装重新下载并安装 Docker Desktop。这一次环境被彻底净化启动后瞬间秒开进入了正常的主界面二、 将本地 MySQL Redis 一键迁移至 Docker在开发阶段使用 Docker 跑数据库和缓存MySQLRedis代码在本地 IDE 中调试既能享受热更新又能保持宿主机整洁。1. 备份本地数据库在停用本地数据库前先用 Navicat 连接本地 MySQL将项目数据库导出为 backup.sql包含结构和数据。2. 停用本地服务释放 3306 端口由于 Docker 里的 MySQL 默认也要使用 3306 端口需要先停掉 Windows 原生服务Win R 输入 services.msc 打开服务列表。找到MySQL80服务将其启动类型改为“手动”并点击“停止”。3. 创建 docker-compose.yml在一个干净的文件夹如 E:\Docker下创建配置文件 docker-compose.yml一键拉起 MySQL 和 RediscodeYamlversion: 3.8 services: # 1. MySQL 数据库服务 my-mysql: image: mysql:8.0 container_name: abp-mysql restart: always environment: MYSQL_ROOT_PASSWORD: rootpassword123 # 这里是 Docker 里的 MySQL 密码 ports: - 3306:3306 volumes: - mysql-data:/var/lib/mysql # 2. Redis 缓存服务ABP 运行极其依赖它 my-redis: image: redis:alpine container_name: abp-redis restart: always ports: - 6379:6379 volumes: mysql-data:4. 极速一键启动与数据恢复在 VS Code 的终端或在该文件夹路径下打开 CMD运行命令codeBashdocker compose up -d等待拉取完成后打开 Navicat 新建连接连接到 127.0.0.1:3306密码rootpassword123。新建与原来同名的数据库 inspect_system字符集选 utf8mb4排序规则选 utf8mb4_0900_ai_ci。在新库上右键点击运行 SQL 文件导入我们之前导出的 backup.sql。三、 一个粗心引发的小乌龙Access denied for user root172.18.0.1在配置好一切后我满怀信心地启动 .NET 后端程序结果控制台直接抛出了异常MySqlException: Access denied for user root127.0.0.1 (using password: YES)排查后发现纯属我个人的一个低级失误我连接本地数据库的密码和在 docker-compose 里设置的 MYSQL_ROOT_PASSWORDrootpassword123不一致。但我忘记去后端项目的 appsettings.json 中修改连接字符串里的 Pwd 参数了。解决办法直接将连接字符串中的密码和数据库名改为最新的配置codeJSONConnectionStrings: { Default: Server127.0.0.1;Port3306;Databaseinspect_system;Uidroot;Pwdrootpassword123;Character Setutf8mb4; }修改后保存再次启动项目数据瞬间连通Vue 3 前端联调成功登录和数据拉取完全正常总结通过这次折腾主要收获了两点经验重装 Docker 之前一定要彻底清理卸载残留尤其是 AppData 下的虚拟磁盘缓存和 WSL 注册信息否则重装也会继承之前的安装错误。配置连接字符串时千万要仔细核对密码。这种由于自己粗心导致的数据库拒绝连接错误往往一不留神就会折腾大半天。把 MySQL 和 Redis 托管给 Docker 后本地开发环境清爽了许多。后续功能开发可以继续愉快地推进了