news 2026/6/10 15:14:15

Windows部署原生Docker,解决Docker Desktop卡在Starting界面的问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows部署原生Docker,解决Docker Desktop卡在Starting界面的问题

本人在复现小智开源项目时,需要使用Docker Desktop来部署MySQL和Redis容器;但是在每次关闭Docker Desktop后,都遇到卡在Starting界面,并且在网上找了很多解决方法都无效。(当然如果大家有更好的解决方法,欢迎大家分享)

最后我想的是既然每次都卡死在这个图形化界面上,那我干脆直接不要这个界面,直接使用原生的Docker。实现彻底甩掉了臃肿且易卡死的 Docker Desktop,让 MySQL 和 Redis 直接原生跑在 WSL2 的 Linux 内核中。

什么是Docker?

Docker 是一个开源的应用容器化平台(Containerization Platform)。它通过将应用程序及其所有依赖项(包括系统库、配置文件等)打包进一个高度隔离的、标准化的独立单元——容器(Container)中,确保软件在从开发者的笔记本电脑到测试环境、再到生产云端服务器的整个生命周期中,都能以完全相同的方式稳定、一致地运行,彻底解决了“在我的机器上能跑,但在别处崩溃”的环境兼容难题。

什么是Docker Desktop?

Docker Desktop 是一个专为 Windows 和 Mac 操作系统打造的一键式本地开发桌面应用。它在后台无缝集成了 Linux 虚拟化技术(如 WSL 2 或 Hyper-V)和核心的 Docker 引擎,并向开发者提供了一个直观的图形化用户界面(GUI)、本地 Kubernetes 集群以及 Docker Compose 等完整开发全家桶,让开发者无需在黑框终端里死记硬背复杂的 Linux 命令,只需通过鼠标点按即可在个人电脑上轻松创建、运行和管理容器化应用。

原生Dcoker的优缺点:

优点:完全免费、极为轻量、不占 Windows 内存、运行速度极快,且操作体验与真正的云服务器一模一样,对技术提升极大。

缺点:彻底没有了图形界面。你再也无法用鼠标去点“绿色播放键”来启动容器,也无法直观地看到日志,所有的容器查看、暂停、删除、修改,全部必须依赖你手敲 Linux 命令(如docker psdocker rm)来完成。

但是如果你也是像我只需要在Docker中部署容器,不需要进行一些复杂的操作,那可以直接部署原生Docker,硬核地使用命令行解决容器部署。

原生Docker的部署方法:

第一步:在开始前,必须确保旧的环境没有冲突。

  1. 卸载 Windows 端:在 Windows 控制面板中,彻底卸载 Docker Desktop(防止后台残留服务与 WSL2 发生死锁)。
  2. 打开 Ubuntu 终端:在 Windows 搜索栏输入Ubuntu并打开,进入 Linux 命令行环境。(前提是Windows电脑中已经部署了Ubuntu)

第二步:在 Ubuntu 终端中,依次执行以下命令:

# 1. 下载官方自动化安装脚本 curl -fsSL https://get.docker.com -o get-docker.sh # 2. 运行安装脚本 (中途遇到 "WSL DETECTED" 倒计时 20 秒,无视它,静静等待即可) sudo sh get-docker.sh # 3. 将你的当前用户加入 docker 用户组,实现免 sudo 敲命令 sudo usermod -aG docker $USER

注:执行完上面三行后,在终端输入exit彻底关闭当前 Ubuntu 窗口,然后重新打开一个新的 Ubuntu 终端,让免密权限生效。

第三步:配置国内加速镜像源(跳过 Timeout 核心步骤)

因为国内直连 Docker 官方服务器会超时,我们直接用 Nano 编辑器 强行焊死国内加速通道:

1、在终端输入命令打开编辑器(需要输密码,盲敲完回车即可,密码是Ubuntu 账户时设置的那个盲输密码)

sudo nano /etc/docker/daemon.json

2、在弹出的蓝黑色全屏界面中,直接鼠标右键粘贴以下内容:

{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://docker.1panel.live", "https://hub.rat.dev", "https://docker.anyhub.us.kg" ] }

3、保存退出

按键盘Ctrl + O,然后按回车(Enter)确认保存。

按键盘Ctrl + X退出编辑器,回到绿色光标。

4、刷新并重启Docker

sudo systemctl daemon-reload sudo service docker restart

5、检查安装

重启了终端后,直接在新的黑框框里输入

docker ps

如果终端没有提示Permission denied,也没有报错,而是清爽地弹出了几列表格头部(如CONTAINER ID,IMAGE,COMMAND)(如下图),那就说明:你已经用最极简、最硬核的方式,把纯原生 Docker 彻底降服在你的 Windows Ubuntu 子系统里了!

如果你想实现一些Dcoker别的功能,可以参考一下其它资料;如果你也是和我一样想要部署小智本地服务器,可以接着往下看。

第四步:部署容器

# 1. 启动 Redis 容器 (开放 6379 端口) docker run -d --name xiaozhi-redis -p 6379:6379 redis:latest # 2. 启动 MySQL 容器 (开放 3306 端口,请把 '你的密码' 换成你项目实际要求的数据库密码) docker run -d --name xiaozhi-mysql -e MYSQL_ROOT_PASSWORD=你的密码 -p 3306:3306 mysql:8.0

注意:在部署小智服务器场景中,需要保证创建 MySQL 时设定的初始密码,与小智项目代码(application.yml)中死锁的默认密码一致

MySQL容器中部署数据库

1、进入MySQL的容器的命令行:

docker exec -it xiaozhi-mysql mysql -u root -p

执行后会提示Enter password:,请输入你创建该容器时设置的 MySQL root 密码(通常是123456)。

2、成功登录 MySQL 后(命令提示符变成mysql>),直接复制并执行这行 SQL 语句:

CREATE DATABASE xiaozhi_esp32_server CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3、退出 MySQL 和容器:

exit;

4、创建一个xiaozhi_esp32_server的空数据库(密码是MySQL root 密码)

docker exec -i xiaozhi-mysql mysql -uroot -p你的密码 -e "CREATE DATABASE IF NOT EXISTS xiaozhi_esp32_server CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

5、验证空数据库是否创建成功

docker exec -i xiaozhi-mysql mysql -uroot -p123456 -e "SHOW DATABASES;"

如果在打印出来的列表里看到了xiaozhi_esp32_server,说明创建成功。

第五步:检查容器运行状态

docker ps

如果表格里整整齐齐出现了xiaozhi-mysqlxiaozhi-redis,并且STATUS显示为Up ...(如下图),说明软件全线畅通!

第六步:如何启动Docker和容器

由于 WSL2 的机制,Windows 每次关机重启后,Linux 内部的服务默认是熄火的。你下次开机想要调试时,只需要打开 Ubuntu 终端,无脑敲入这三行上电口诀即可:

sudo service docker start # 1. 唤醒 Docker docker start xiaozhi-redis # 2. 一键热启动 Redis docker start xiaozhi-mysql # 3. 一键热启动 MySQL

第七步:实现容器自启动(可选)

首先,用 Nano 编辑器修改 WSL 配置文件

sudo nano /etc/wsl.conf

其次,把“开机自启”的协议写进去,在打开的编辑器空白处,右键粘贴以下两行内容:

[boot] systemd=true

然后按下Ctrl + O键,再按回车(Enter)保存;接着按下Ctrl + X退出编辑器。

随后,设置容器为自启动模式。

在 Ubuntu 里连续敲入这两行命令,告诉 Docker 以后只要引擎启动,这两个数据库必须自动站起来:

docker update --restart=always xiaozhi-redis docker update --restart=always xiaozhi-mysql

最后,重置WSL,回到你的 Windows CMD 终端,输入以下命令让配置彻底生效:

wsl --shutdown

完成上述步骤后,你重新启动电脑,当其它操作调用的时候它们就可以自动启动。

我的场景是本地部署小智服务器,所以我在启动小智服务器时,在 Windows 侧运行我的manager-api主程序,电脑就可以自动唤醒WSL2 Ubuntu,而Ubuntu 里的systemd自动点火 Docker 引擎,引擎根据always策略自动把 MySQL 和 Redis 托举起来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:12:10

Linux的基本命令的演示

1.在 root 用户的家目录下创建两个目录分别为 haha 和 hehe,复制 hehe 目录到 haha 目录并重命名为 apple。[rootlocalhost ~]# mkdir -vp haha hehe mkdir: 已创建目录 haha mkdir: 已创建目录 hehe [rootlocalhost ~]# cp -r hehe haha [rootlocalhost ~]# ls ha…

作者头像 李华
网站建设 2026/6/10 15:10:26

告别熬夜凑论文!paperxie 课程论文 AI 写作,一键解锁高效出稿新方式

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/课程论文课程论文 - PaperXie智能写作PaperXieAi论文智能生成软件,10分钟生成万字毕业论文、期刊论文、文献综述、PPT,Aigc查重、降重报告、文献资料。只需一个标题,从开…

作者头像 李华
网站建设 2026/6/10 15:10:22

龙虾很强,但企业需要「帝王蟹」!

近日,网易智企「帝王蟹」企业AI落地实战营来到北京,一场聚焦AI Agent规模化落地的深度专场燃爆京城。继杭州启航,「帝王蟹」陆续来到广州、深圳、上海,本次北京站以"AI 赋能、企业级交付、落地实操"为核心,从…

作者头像 李华
网站建设 2026/6/10 15:09:22

最大规模预训练具身世界模型,真机遥操作数据高达17800小时!

真机数据从微调配角,变身具身预训练绝对主力 ——真机预训练 目录 01 真机数据从“微调耗材”变成“预训练根基” 02 一个共享骨干,同时当“策略”和“模拟器” VAM视频动作模型:直接输出可执行动作 ACVS动作条件模拟器&#xff1…

作者头像 李华
网站建设 2026/6/10 15:08:28

Java作业3

文本文件复制:import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class TextCopy {public static void main(String[] args) {String src…

作者头像 李华
网站建设 2026/6/10 15:06:06

参加深信服SF-Fastgpt培训小结

参加深信服SF-Fastgpt培训小结 今天参加了深信服组织的SF-Fastgpt商业版培训,整天的内容安排比较紧凑,上午讲AI基础概念,下午重点介绍商业版的功能特性。我简单梳理一下主要的收获。 上午的部分主要是AI基础知识的串讲。讲师把tokenizer的分词…

作者头像 李华