一.准备工作
(1)检查确保电脑的虚拟化开启。
需要在BIOS中开启虚拟化技术(VT、VT-x或AMD-V)。
(2)确保当前版本是64位Windows 10 Pro,专业版、企业版和教育版
要安装WSL 2,需要版本 1903 或更高版本Win10 或者 Win 11
WSL2安装是否成功
WSL2的安装参考安装 WSL | Microsoft Docs
安装开启Hyper-V (经测试,原来Hyper-V也不是必须的,原因见-3)
家庭版的处理方式:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
regedit, 临时修改EditionID为Professional,伪装成专业版。
----------------------------------------------------------------------------------------
注:1. 家庭版的这个方案没有测试,为了使用docker,专门把系统升级到了企业版。后来发现也不是必须的。
----------------------------------------------------------------------------------------
(3)开启“适用于Linux的的Windows子系统”
WSL的最新版本使用Hyper-V架构来实现其虚拟化。 该架构将在“虚拟机平台”可选组件中提供。所以WSL2需要勾选的是基于Hyper-V架构的“虚拟机平台”。
-------------------------------------------------------------------------------
注:原来只需要选择安装这两项就可以了。这个虚拟机平台就是一个精简版的Hyper-v。
关于wsl2的相关说明详见:旧版 WSL 的手动安装步骤 | Microsoft Docs
-------------------------------------------------------------------------------
(4)下载windows版的docker
Docker Desktop for Windows by Docker | Docker Hub
二. Windows Docker Desktop默认安装到 c:\program files\docker目录。如果c盘空间不够,可以使用mklink命令,将其他盘的文件夹的快捷方式映射到c盘的固定目录,这样就可以将Docker Desktop安装到其他目录,节约宝贵的c盘空间。
命令如下:
mklink /j "C:\Program Files\Docker" "D:\Program Files\Docker"
如果提示“当文件已存在时,无法创建该文件”。
那是因为Docker目录已经存在,删除c盘的相应目录后,执行成功。
3. Docker Desktop启动失败
Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException: 引发类型为“Docker.ApiServices.WSL2.WslKernelUpdateNotInstalledException”的异常。
在 Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) 位置 C:\workspaces\PR-16070\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:行号 140
在 Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() 位置 C:\workspaces\PR-16070\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:行号 169
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
查了资料,错误是因为WSL2与Proxifier无法同时使用。方案来源:Winsock module breaks WSL2 · Issue #4177 · microsoft/WSL · GitHub
下载nolsp解决,运行命令如下:
nolsp.exe C:\WINDOWS\system32\wsl.exe
重启docker desktop正常
测试下,已经安装成功。
相关软件特别是nolsp不好直接下载,
链接:https://pan.baidu.com/s/19q8pN5BIb879aCNV_7eqrg
提取码:j41p
4. Docker的设置
(1)替换为国内源:
https://registry.docker-cn.com # Docker中国区官方镜像
http://hub-mirror.c.163.com # 网易
https://docker.mirrors.ustc.edu.cn # ustc
https://docker.mirrors.ustc.edu.cn # 中国科技大学
https://cr.console.aliyun.com/ # 阿里云容器 服务
(2)wls位置迁移
WSL 发行版默认都是安装在 C 盘,在%LOCALAPPDATA%/Docker/wsl 目录 docker 的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx 中
要把文件迁移走,得靠wsl的备份还原功能
wsl --terminate <DistritubtionName> # 先关闭相关的分发,以免后续造成不必要的问题
wsl --export <DistributionName> <FileName> # 导出Linux子系统
wsl --unregister Ubuntu-18.04 # 注销这个分发
wsl --import <DistributionName> <InstallLocation> <FileName> # 导入/还原之前的分发版本
1)首先关闭 docker
2)关闭所有发行版:
wsl --shutdown
3)将 docker-desktop-data 导出指定目录 D:\WslData\
wsl --export docker-desktop-data D:\WslData\docker-desktop-data.tar
4)
注销 docker-desktop-data
wsl --unregister docker-desktop-data
5)
重新导入 docker-desktop-data 到要存放的文件夹
wsl --import docker-desktop-data d:\wsldata\ d:\wsldata\docker-desktop-data.tar --version 2
完成以上操作后,原来的%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx 就迁移到新目录了
三、安装MySql
(1)Pull Mysql5.7.27并把MySql映射到宿主机
(2)查看Mysql的IP地址
图中可以看到172.25.187.245
(3) Sql数据库的导出
WSL会自动管理镜像,无法直接获取mysql的安装位置,数据库导出常规方法无法完成,需要通过mysqldump实现。
docker exec -it [mysql容器名] mysqldump -uroot -p[mysql的密码] [导出的数据库]>[导出位置]
其中,导出位置是一个.sql文件,否则报目录不存在错误。
例子:docker exec -it mysql mysqldump -uroot -pPassword Product>D:/research/product.sql