我是win10系统,目前本机有docker desktop和wsl2(ubuntu20.4)。我想在win10笔记本里搭建linux系统,并在docker desktop里搭建部署开发环境,在docker里面开发,部署开发所需要的环境如MySQL、Python等;并把本机中mysql等服务器删掉。给出从0开始搭建的全部步骤,详细点
时间: 2025-08-02 15:30:45 浏览: 10
<think>我们正在Windows10上使用DockerDesktop和WSL2(Ubuntu)搭建Linux开发环境,包括安装MySQL、Python等服务,并移除本机安装的同类服务。以下是完整步骤:###一、系统环境准备1.**启用WSL2和Hyper-V**-以管理员身份打开PowerShell:```powershelldism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestartdism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norestart```-重启计算机[^1][^2]-下载并安装[WSL2Linux内核更新包](https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)-设置WSL2为默认版本:```powershellwsl--set-default-version2```2.**安装Ubuntu发行版**-在MicrosoftStore中搜索安装"Ubuntu22.04LTS"-启动Ubuntu并设置用户名密码[^2]3.**安装DockerDesktop**-下载[DockerDesktopforWindows](https://www.docker.com/products/docker-desktop)-安装时勾选"UseWSL2insteadofHyper-V"选项-在设置>General中勾选"UsetheWSL2basedengine"-在设置>Resources>WSLIntegration中启用Ubuntu集成[^1]###二、配置开发环境容器1.**创建Docker项目目录**```bash#在WSLUbuntu中操作mkdir~/dev_env&&cd~/dev_env```2.**编写docker-compose.yml**```yamlversion:'3.8'services:mysql:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:your_strong_passwordMYSQL_DATABASE:dev_dbports:-"3306:3306"volumes:-mysql_data:/var/lib/mysqlrestart:alwayspython:image:python:3.9-slimvolumes:-./app:/appworking_dir:/appports:-"8000:8000"command:tail-f/dev/null#保持容器运行depends_on:-mysqlvolumes:mysql_data:```3.**启动开发环境**```bashdockercomposeup-d```###三、访问开发服务1.**MySQL连接**-主机:`localhost`-端口:3306-用户名:root-密码:`your_strong_password`2.**Python容器操作**```bash#进入Python容器dockerexec-itdev_env-python-1bash#安装依赖(示例)pipinstalldjangomysqlclient#测试MySQL连接python-c"importMySQLdb;MySQLdb.connect(host='mysql',user='root',password='your_strong_password',database='dev_db')"```###四、卸载本机服务(以MySQL为例)1.**Windows服务卸载**-停止MySQL服务(服务管理器或`netstopmysql`)-通过控制面板>程序和功能卸载MySQL2.**清理残留文件**-删除`C:\ProgramFiles\MySQL`-删除`C:\ProgramData\MySQL`(隐藏目录)-删除注册表项:`HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\MySQL``HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\MySQL`###五、验证环境隔离```bash#在WindowsPowerShell检查服务Get-Service|Where-Object{$_.Name-like"*mysql*"}#应无返回结果#在Docker容器内检查dockerexecdev_env-mysql-1mysql-uroot-pyour_strong_password-e"SHOWDATABASES;"```>✅至此已完成容器化开发环境迁移,所有服务运行在隔离的Docker容器中[^4]。###关键配置说明|组件|配置要点|说明||------------|-----------------------------------|--------------------------||**WSL2**|内存限制调整|在`%userprofile%\.wslconfig`中设置`memory=4GB`||**Docker**|磁盘镜像位置|在DockerDesktop设置中修改Diskimagelocation避免C盘膨胀||**MySQL**|数据持久化|通过volume确保数据不丢失||**Python**|代码挂载卷|实现宿主机与容器代码实时同步|###常见问题解决1.**端口冲突**:修改`docker-compose.yml`中的端口映射(如MySQL改为`3307:3306`)2.**WSL2启动失败**:在PowerShell执行`wsl--update`和`wsl--shutdown`3.**磁盘空间回收**:在DockerDesktop执行`Clean/Purgedata`---###相关问题1.如何备份Docker容器中的MySQL数据库?2.怎样在Docker中调试Python应用程序?3.WSL2与虚拟机性能对比有何优势?4.如何限制Docker容器使用的CPU和内存资源?5.容器内服务如何通过主机名互相访问?[^1]:DockerDesktop是可以部署在windows运行docker的应用服务,其基于windos的Hyper-V服务和WSL2内核在windos上创建一个子系统(linux),从而实现其在windows上运行docker。环境配置[^2]:3启动操作安装的linux使用wsl:在cmd(或powershell)输入wsl(或者:wsl-dUbuntu-22.04)cat/etc/os-release#查看Linux的版本[^4]:可以启动一个系统dockerrun-i-d-t--name=kali-testkalilinux/kali-rolling(这里我使用linux的一个发行版kali作为介绍)或可以简写为dockerrun-idt--name=kali-testkalilinux/kali-rollingPS:如果加载一个我们没有的镜像,docker会自动从官方仓库中进行拉去。</think>### Win10 Docker Desktop + WSL2 Ubuntu 开发环境搭建指南
以下是完整的搭建流程,包含MySQL、Python等服务的容器化部署及本机服务清理:
---
#### 一、环境准备
1. **启用WSL2和Hyper-V**
```powershell
# 管理员身份运行PowerShell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
重启后设置WSL2为默认版本:
```powershell
wsl --set-default-version 2
```
2. **安装Ubuntu子系统**
- Microsoft Store搜索安装"Ubuntu 22.04 LTS"
- 启动后设置用户名/密码[^2]
3. **安装Docker Desktop**
- 官网下载安装包:https://www.docker.com/products/docker-desktop
- 安装时勾选"Use WSL 2 instead of Hyper-V"
- 设置 > General > 勾选"Use the WSL 2 based engine"
---
#### 二、容器化开发环境部署
1. **创建docker-compose.yml**
```yaml
version: '3.8'
services:
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
MYSQL_DATABASE: dev_db
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
restart: always
python:
image: python:3.9-slim
volumes:
- ./app:/app
working_dir: /app
ports:
- "8000:8000"
command: tail -f /dev/null # 保持容器运行
volumes:
mysql_data:
```
2. **启动服务**
```bash
# 在WSL Ubuntu终端
mkdir ~/dev_project && cd ~/dev_project
docker compose up -d
```
3. **验证服务**
```bash
# 检查容器状态
docker ps
# 连接MySQL容器
docker exec -it dev_project-mysql-1 mysql -uroot -pmy-secret-pw
```
---
#### 三、本机服务清理(以MySQL为例)
1. **卸载MySQL服务**
```powershell
# 停止服务
net stop mysql
# 卸载程序
appwiz.cpl # 打开程序和功能,卸载MySQL
```
2. **清理残留文件**
```powershell
# 删除数据目录
Remove-Item -Recurse -Force "C:\ProgramData\MySQL"
# 删除安装目录
Remove-Item -Recurse -Force "C:\Program Files\MySQL"
```
3. **删除环境变量**
- 系统属性 > 高级 > 环境变量
- 删除PATH中的MySQL路径
---
#### 四、开发环境使用示例
1. **Python容器操作**
```bash
docker exec -it dev_project-python-1 bash
pip install django mysqlclient
```
2. **连接MySQL容器**
```python
# app/test_db.py
import MySQLdb
db = MySQLdb.connect(
host="mysql", # 使用docker-compose服务名
user="root",
passwd="my-secret-pw",
db="dev_db"
)
```
---
#### 五、环境验证
| 组件 | 验证命令 | 预期结果 |
|------------|-----------------------------|-----------------------|
| **MySQL** | `docker exec mysql mysql -V` | MySQL 8.x版本信息 |
| **Python** | `docker exec python python --version` | Python 3.9.x |
| **本机** | `Get-Service *mysql*` | 无MySQL服务记录 |
---
### 常见问题解决
1. **端口冲突**:
```bash
# 查看占用端口进程
netstat -ano | findstr :3306
# 终止进程
taskkill /PID <进程ID> /F
```
2. **WSL2启动失败**:
```powershell
wsl --update
wsl --shutdown
```
3. **磁盘空间回收**:
Docker Desktop > Troubleshoot > Clean / Purge data
---
### 相关问题
1. 如何在Docker容器中调试Python应用程序?
2. 怎样备份Docker容器中的MySQL数据库?
3. WSL2与虚拟机性能对比有何优势?
4. 如何限制Docker容器使用的CPU/内存资源?
5. 容器内服务如何通过主机名互相访问?
[^1]: Docker Desktop是可以部署在windows运行docker的应用服务,其基于windos的Hyper-V服务和WSL2内核在windos上创建一个子系统(linux)
[^2]: 3 启动操作安装的linux 使用 wsl:在 cmd(或powershell)输入 wsl(或者:wsl -d Ubuntu-22.04)
[^4]: 可以启动一个系统 docker run -i -d -t --name=kali-test kalilinux/kali-rolling
阅读全文