实现
1、虚拟化检查
打开任务管理-性能,查看是否虚拟化已经支持,若未支持则需要重启进入BIOS打开虚拟化支持。
2、安装虚拟机并开启Hyper-V功能、虚拟机功能。
因为Win10家庭版没有安装虚拟机,所以通过安装一个
新建一个txt文件,并将如下内容复制进去
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
然后将此txt文件修改后缀名为.cmd,然后以管理员身份运行该cmd文件
等待运行结束后根据提示重启,输入Y并重启计算机。
此时启用或关闭系统功能中才会有Hyper-V选项。
【控制面板】-【程序】-【启用或关闭Windows功能】找到Hyper-V打上勾
然后再将Windows虚拟机监控程序平台、适用于Linux的Windows子系统、虚拟机平台这三个功能勾选上并开启
3、修改注册表,伪装专业版
以管理员身份打开cmd,执行如下
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
此处是将注册表的值修改为Professional以使能正常运行,即伪装成win10专业版。
4、下载安装Docker Desktop
Docker Desktop:
The #1 Containerization Tool for Developers | Docker
下载之后双击进行安装
安装时会默认勾选使用WSL2替代Hyper-V选项以及创建桌面快捷方式选项。
这里将Use WSL 2 instead of Hyper-V(recommended)选项勾掉。
否则Docker Desktop会一直处于Stopped状态且无明显报错提示,即使卸载重装、查看内存和磁盘分配、排查网络问题也不行。
所以最后只能将Docker Desktop重新卸载掉,然后安装时取消勾选Use WSL 2 instead of Hyper-V(recommended)选项才解决
Docker Desktop一直提示Docker Engine stopped的问题。
取消勾选并启动成功
5、上面启动成功之后,可打开cmd输入
docker version
注意:如果启动docker desktop处于stop状态要去配置那边把wl2引擎关了(去掉勾选)
二、拉取redis、mysql镜像并挂载:
docker pull redis:7.0.15
本地镜像拉取成功,接下来启动并挂载redis目录到本地文件夹,cmd打开命令管理器终端:
docker run --name redis-dev -d ^
--restart unless-stopped ^
-e TZ=Asia/Shanghai ^
-p 16379:6379 ^
-v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf ^
-v D:\Develop\Docker\Data\redis\data:/data ^
redis:7.0.14 ^
redis-server /etc/redis/redis.conf ^
--requirepass 123456 ^
--appendonly yes
参数解析:
--name redis-dev #给容器命名为redis-dev
-d #后台运行容器
--restart unless-stopped #设置重启策略为在容器手动停止时以外的任何原因退出时重启
-e TZ=Asia/Shanghai #设置容器的时区
-p 16379:6379 #将容器的6379端口映射到主机的16379端口
-v D:\Develop\Docker\Data\redis\redis.conf:/etc/redis/redis.conf #将配置文件映射到容器
-v D:\Develop\Docker\Data\redis\data:/data #将数据目录映射到容器
redis:7.0.14 #使用版本为7.0.14的redis镜像
redis-server /etc/redis/redis.conf #使用容器内的redis配置启动服务
--requirepass #连接密码
--appendonly yes #开启持久化
验证:
可以看到左边host是我们本地的路径(自己创建好),conf文件去:Tags · redis/redis · GitHub找到对应的版本下载,然后拷贝出来改一下bind:0.0.0.0(原来应该是127.0.0.1)。
接下来验证一下数据:
本地redis可视化工具打开0.0.0.0,端口是16379输入密码123456:
可以看到redis刚刚测试的数据有写到,说明是成功的!
拉取mysql镜像
docker pull mysql:5.7
创建docker网络,cmd窗口输入:
# 创建docker网络,便于容器可以通过网络与宿主机和其他容器通信
docker network create docker-network
创建容器并运行,cmd窗口输入:
docker run --name mysql-dev -d ^
--restart unless-stopped ^
-e TZ=Asia/Shanghai ^
--network docker-network ^
-v D:\Develop\Docker\Data\mysql\log:/var/log/mysql ^
-v D:\Develop\Docker\Data\mysql\data:/var/lib/mysql ^
-v D:\Develop\Docker\Data\mysql\conf:/etc/mysql/conf.d ^
-p 13306:3306 ^
-e MYSQL_ROOT_PASSWORD=123456 ^
mysql:8.0.35
--name mysql-dev #指定容器名称
-d #后台运行容器
--restart unless-stopped #设置重启策略为在容器手动停止时以外的任何原因退出时重启
-e TZ=Asia/Shanghai #设置容器时区
--network docker-network #将容器连接到自定义的 Docker网络中
-v #目录挂载
-p 13306:3306 #将容器的 3306端口映射到宿主机的 13306端口
-e MYSQL_ROOT_PASSWORD=123456 # mysql root用户的密码
mysql:8.0.35 #使用的mysql镜像版本
navicat连一下看看,端口号13306,密码123456:
说明是成功的!