📘 从零搭建:VMware + Ubuntu + Docker + MySQL 完整指南
适用场景:在 Windows 笔记本上用虚拟机跑 Ubuntu,再用 Docker 部署 MySQL,并实现从 Windows 本地连接数据库。
一、准备工作:下载所需软件
1.1 下载 VMware Workstation Pro
- 官网地址 :Broadcom 支持门户
- 版本选择 :17.x 系列(目前对个人用户免费)
- 注意事项 :
- 需要注册一个 Broadcom 账号才能下载。
- 下载 for Windows 的
.exe安装包。 - ⚠️ 易错点:注册时请填写真实邮箱和国家/地区,否则可能因出口合规审核不通过而无法下载。
1.2 下载 Ubuntu 镜像(ISO)
- 官网地址 :Ubuntu 下载页
- 推荐版本 :Ubuntu 22.04 LTS(稳定,教程多)或 24.04 LTS
- 架构选择 :64-bit (amd64)
- 版本类型 :Desktop(桌面版) 或 Server(服务器版) 都可以,桌面版带图形界面,调试更方便。
- ⚠️ 易错点:如果下载速度慢,可以使用国内镜像站(如清华、中科大镜像源)下载。
二、安装 VMware 并创建 Ubuntu 虚拟机
2.1 安装 VMware
- 双击下载的
.exe文件,按提示完成安装。 - ⚠️ 重要 :安装完成后不要开启 Windows 的 Hyper-V 功能,否则 VMware 可能无法正常运行或导致蓝屏。
- 🔴 特别提醒(联想小新等机型) :如果开启 BIOS 中的虚拟化(VT-x)后蓝屏,请在 Windows 功能中关闭 Hyper-V、虚拟机平台、Windows 虚拟机监控程序平台,然后重启电脑。
2.2 创建虚拟机
- 打开 VMware,点击 "创建新的虚拟机"。
- 选择 "典型(推荐)" → "稍后安装操作系统"。
- 客户机操作系统选择 "Linux" → 版本选择 "Ubuntu 64 位"。
- 设置虚拟机名称和存储位置。
- 磁盘大小 :建议 20GB 以上 ,并选择 "将虚拟磁盘存储为单个文件"。
- 点击 "自定义硬件" :
- 内存 :建议分配 2GB ~ 4GB(不低于 2GB)。
- 处理器 :至少 2 核。
- 网络适配器 :选择 "NAT 模式"(便于联网,后续也可改桥接)。
- CD/DVD :选择 "使用 ISO 镜像文件",浏览选择你下载的 Ubuntu ISO。
- 点击 "完成"。
2.3 安装 Ubuntu 系统
- 点击 "开启此虚拟机"。
- 选择 "Try or Install Ubuntu" → 选择语言为 "中文(简体)" 或 "English" → 点击 "安装 Ubuntu"。
- 键盘布局默认即可,选择 "正常安装" 并勾选 "安装时下载更新"(可选,建议勾选以获取最新补丁)。
- 安装类型选择 "清除整个磁盘并安装 Ubuntu"(虚拟机内无重要数据,选这个最省心)。
- 设置用户名、计算机名和密码(请务必记住密码)。
- 等待安装完成,重启虚拟机。
三、Ubuntu 基础配置
3.1 更换软件源(加速 apt 下载)
Ubuntu 默认源在国外,速度较慢,建议换成国内镜像源。
-
打开终端(
Ctrl + Alt + T)。 -
备份原有源列表:
bashsudo cp /etc/apt/sources.list /etc/apt/sources.list.bak -
编辑源列表(以阿里云镜像为例):
bashsudo nano /etc/apt/sources.list删除原有内容,粘贴以下内容(适用于 Ubuntu 22.04 Jammy):
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse💡 提示 :如果你装的是 Ubuntu 24.04,请将
jammy替换为noble。 -
保存(
Ctrl+O,回车,Ctrl+X)并更新:bashsudo apt update
3.2 安装 VMware Tools(增强交互)
安装此工具后可以实现文件拖拽、剪贴板共享、自适应窗口大小等功能。
bash
sudo apt install open-vm-tools open-vm-tools-desktop -y
sudo reboot
四、安装 Docker 和 Docker Compose
4.1 安装 Docker
bash
sudo apt install docker.io -y
4.2 启动 Docker 并设置开机自启
bash
sudo systemctl start docker
sudo systemctl enable docker
验证安装:
bash
docker --version
4.3 安装 Docker Compose 插件(新版)
⚠️ 注意 :新版 Docker Compose 命令是
docker compose(中间是空格,不是连字符),不要和旧版docker-compose混淆。
步骤一:添加 Docker 官方 GPG 密钥和软件源(使用阿里云镜像,国内访问更快)
bash
# 1. 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 2. 创建密钥目录并下载 GPG 密钥(使用阿里云镜像)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 3. 添加 Docker APT 源(阿里云镜像)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 更新软件包列表
sudo apt update
# 5. 安装 Docker Compose 插件
sudo apt install -y docker-compose-plugin
验证安装
bash
docker compose version
正常会显示类似 Docker Compose version v2.x.x 的信息。
五、配置 Docker 镜像加速器(解决拉取镜像慢/失败问题)
由于 Docker Hub 在国内访问不稳定,需要配置国内镜像加速器。
-
编辑 Docker 配置文件:
bashsudo nano /etc/docker/daemon.json -
写入以下内容(使用阿里云和 DaoCloud 镜像):
json{ "registry-mirrors": [ "https://registry.cn-hangzhou.aliyuncs.com", "https://docker.m.daocloud.io" ], "dns": ["114.114.114.114", "223.5.5.5"] } -
保存退出(
Ctrl+O,回车,Ctrl+X),然后重启 Docker:bashsudo systemctl restart docker -
验证是否生效:
bashsudo docker info | grep -A 1 "Registry Mirrors"
六、使用 Docker Compose 部署 MySQL
6.1 创建工作目录
bash
mkdir -p ~/docker/mysql/{data,conf.d}
cd ~/docker
6.2 创建 docker-compose.yml 文件
bash
nano docker-compose.yml
粘贴以下内容(⚠️ 请务必将密码 your_strong_password 替换为你自己的强密码):
yaml
services:
mysql:
image: mysql:8.0
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: your_strong_password # 🔴 请修改为你的密码
ports:
- "3306:3306"
volumes:
- ~/docker/mysql/data:/var/lib/mysql
- ~/docker/mysql/conf.d:/etc/mysql/conf.d
⚠️ 易错点:
- 文件中不要写
version: '3.8'这一行,新版 Docker Compose 已弃用该字段,写了会报警告。- 不要 同时设置
MYSQL_USER=root,这会与MYSQL_ROOT_PASSWORD冲突,导致容器启动失败。- 密码中尽量不要包含特殊字符(如
$、!、&),避免 shell 解析错误。
保存退出(Ctrl+O,回车,Ctrl+X)。
6.3 启动 MySQL 容器
bash
sudo docker compose up -d
6.4 验证容器是否正常运行
bash
sudo docker ps
如果看到 mysql-container 的 STATUS 为 Up,说明启动成功。
七、解决 Windows 客户端连接 MySQL 的认证问题(错误 1251)
MySQL 8.0 默认使用 caching_sha2_password 认证插件,而一些旧版客户端(如 SQLyog、Navicat 早期版本)默认使用 mysql_native_password,会导致连接报错 1251。
7.1 修改 root 用户的认证方式
在 Ubuntu 终端执行以下命令(替换密码为你的实际密码):
bash
sudo docker exec -it mysql-container mysql -uroot -p你的密码 -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;"
示例 (假设密码是 123456):
bash
sudo docker exec -it mysql-container mysql -uroot -p123456 -e "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES;"
⚠️ 安全提示 :命令行中直接暴露密码可能会有安全风险,生产环境建议使用
-p交互式输入。
7.2 验证认证方式是否修改成功
bash
sudo docker exec -it mysql-container mysql -uroot -p你的密码 -e "SELECT host, user, plugin FROM mysql.user WHERE user='root';"
如果 plugin 列显示为 mysql_native_password,则修改成功。
八、从 Windows 连接 Ubuntu 中的 MySQL
8.1 获取 Ubuntu 虚拟机的 IP 地址
在 Ubuntu 终端执行:
bash
ip a
找到类似 ens33 网卡的 inet 地址,例如 192.168.160.128。
8.2 在 Windows 上测试网络连通性
打开 Windows 命令提示符(Win + R,输入 cmd):
bash
ping 192.168.160.128 # 替换为你的实际 IP
8.3 配置 MySQL 允许远程连接(如果上一步已执行 ALTER USER 则此步可跳过)
如果修改认证方式后仍无法连接,可以检查一下授权:
bash
sudo docker exec -it mysql-container mysql -uroot -p你的密码 -e "SELECT host, user FROM mysql.user;"
确保 root 用户的 host 列为 %(允许任意 IP 连接)。
8.4 检查 Ubuntu 防火墙(如果启用了 ufw)
bash
sudo ufw status
如果防火墙开启,需要放行 3306 端口:
bash
sudo ufw allow 3306
8.5 在 Windows 上使用客户端连接
以 SQLyog 为例:
- MySQL 主机地址 :Ubuntu 的 IP(如
192.168.160.128) - 用户名 :
root - 密码:你设置的密码
- 端口 :
3306
点击 "测试连接",如果显示成功,就大功告成了!
九、常用 Docker 命令速查
| 操作 | 命令 |
|---|---|
| 查看运行中的容器 | sudo docker ps |
| 查看所有容器(含已停止) | sudo docker ps -a |
| 启动容器 | sudo docker compose up -d |
| 停止并删除容器 | sudo docker compose down |
| 查看容器日志 | sudo docker logs mysql-container |
| 进入容器内部 | sudo docker exec -it mysql-container bash |
| 在容器内执行 MySQL 命令 | sudo docker exec -it mysql-container mysql -uroot -p |
| 备份所有数据库 | sudo docker exec mysql-container mysqldump -uroot -p --all-databases > backup.sql |
| 恢复数据库 | `cat backup.sql |
十、常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 开启虚拟化后 Windows 蓝屏 | Hyper-V 与 VMware 冲突 | 关闭 Windows 功能中的 Hyper-V、虚拟机平台 |
sudo: docker-compose: command not found |
安装的是新版插件,命令是 docker compose |
使用 docker compose(空格)代替 docker-compose(连字符) |
failed to resolve reference |
镜像拉取网络问题 | 配置 daemon.json 中的 registry-mirrors |
no such host |
DNS 解析失败 | 在 daemon.json 中添加 "dns": ["114.114.114.114"] |
| 容器启动后立即退出 | 环境变量配置错误(如 MYSQL_USER=root) |
检查 docker-compose.yml,删除冲突的环境变量 |
| Windows 连接报错 1251 | 认证插件不兼容 | 执行 ALTER USER ... IDENTIFIED WITH mysql_native_password |
| Windows ping 不通 Ubuntu | VMware 网络模式问题 | 尝试改为桥接模式,或检查虚拟网卡设置 |
附录:推荐的国内镜像源地址
| 用途 | 镜像地址 |
|---|---|
| Ubuntu APT 源 | http://mirrors.aliyun.com/ubuntu/ |
| Docker 镜像加速器 | https://registry.cn-hangzhou.aliyuncs.com |
| Docker 镜像加速器 | https://docker.m.daocloud.io |
| Docker APT 源 | https://mirrors.aliyun.com/docker-ce/linux/ubuntu |
| Ubuntu ISO 下载 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/ |
📝 文档版本 :1.0
📅 最后更新 :2026-08-06
👤 适用环境:Windows 10/11 + VMware Workstation Pro 17.x + Ubuntu 22.04/24.04 LTS + Docker 26.x + MySQL 8.0
如果后续还有补充或修改需求,随时告诉我,我可以帮你更新这份文档。