这是我参与「第五届青训营 」笔记创作活动的第3天
一、重点内容
大多数同学使用的是windows平台,windows平台在开发过程中可能会遇到环境问题,软件包问题等。大大降低了开发效率。使用适用于linux的windows子系统能让我们在windows平台上使用ubuntu系统,分发包管理器安装其他软件,提高文件系统性能,以及添加完全的系统调用兼容性。今天我就以安装docker版的MySQL为例,解决使用固定IP等问题。
二、详细介绍
1.安装wsl2
应当使用win10或11的专业版,专业版提供hyper-v功能。
现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入
wsl --install
命令,然后重启计算机。
wsl -l -v
确认当前版本是wsl2,即VERSION为2。
2.安装Docker和Docker-compose
根据教程即可,非笔记重点。
Ubuntu Docker 安装 | 菜鸟教程 (runoob.com)
Docker Compose | 菜鸟教程 (runoob.com)
3.使用Docker安装MySQL
在 ~ 目录下新建db文件夹,创建以下文件。
data文件夹 以及 docker-compose.yml文件
docker-compose.yml内容:
version: "3.9"
services:
mysql-dev:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw
ports:
- "3306:3306"
volumes:
- ./data:/var/lib/mysql
然后在db目录下通过docker-compose up -d运行即可。
使用docker ps,查看运行状态
MySQL安装完成。
4.重点 固定wsl2的ip
windows电脑的当前用户的目录下创建.wslconfig文件
[wsl2]
networkingMode=bridged
vmSwitch=WSLBridge
dhcp=false
macAddress=5c:bb:f6:9e:ee:55
创建hyper-v虚拟交换机,之所以wsl2每次的IP都不一样,是因为他在启动时都使用默认交换机随机分配ip,使用我们创建的虚拟交换机,能够使用我们自定义的配置文件。
查看是否安装完成ps管理员状态下 Get-VMSwitch | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
注意Name为 WSLBridge
接下来更改wsl2内的配置文件
在/etc/wsl.conf文件中
[boot]
systemd=true
[network]
generateResolvConf = false
在/usr/lib/systemd/network/wsl_external.network文件中
[Match]
Name=eth0
[Network]
Description=WSL
DHCP=false
Address=192.168.0.93/24
Gateway=192.168.0.1
在/etc/resolv.conf文件中
nameserver 223.5.5.5
最后重启wsl2,注意通过wsl --shutdown命令关闭虚拟机后,等待8秒再启动。
5.查看效果
在wsl2中执行ip a,我们可以看到
固定了wsl2的ip地址为192.168.0.93
使用windows电脑上的navicat我们可以看到,使用密码my-secret-pw登录
三、个人总结
通过以上实践,我们通过对wsl,docker,docker-compose和网络配置的操作,对操作系统的认知更为深入。也让我们能够轻松地在本地进行开发而不需要使用云服务器。虽然这只是MySQL的实践操作,但这个例子能够让我们举一反三,更加熟练掌握其它docker容器的使用。
四、引用参考
什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn
[WSL 2] NIC Bridge mode 🖧 (Has TCP Workaround🔨) · Issue #4150 · microsoft/WSL (github.com)