Docker,MySQL的wsl2环境搭建 IP固定 | 青训营笔记

1,659 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第3天

一、重点内容

大多数同学使用的是windows平台,windows平台在开发过程中可能会遇到环境问题,软件包问题等。大大降低了开发效率。使用适用于linux的windows子系统能让我们在windows平台上使用ubuntu系统,分发包管理器安装其他软件,提高文件系统性能,以及添加完全的系统调用兼容性。今天我就以安装docker版的MySQL为例,解决使用固定IP等问题。

二、详细介绍

1.安装wsl2

应当使用win10或11的专业版,专业版提供hyper-v功能。

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入

wsl --install

命令,然后重启计算机。

wsl -l -v

image.png

确认当前版本是wsl2,即VERSION为2。

2.安装Docker和Docker-compose

根据教程即可,非笔记重点。

Ubuntu Docker 安装 | 菜鸟教程 (runoob.com)

Docker Compose | 菜鸟教程 (runoob.com)

3.使用Docker安装MySQL

在 ~ 目录下新建db文件夹,创建以下文件。

image.png

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,查看运行状态

image.png

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,使用我们创建的虚拟交换机,能够使用我们自定义的配置文件。

image.png

查看是否安装完成ps管理员状态下 Get-VMSwitch | Select Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS

image.png

注意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,我们可以看到

image.png 固定了wsl2的ip地址为192.168.0.93

使用windows电脑上的navicat我们可以看到,使用密码my-secret-pw登录

image.png

三、个人总结

通过以上实践,我们通过对wsl,docker,docker-compose和网络配置的操作,对操作系统的认知更为深入。也让我们能够轻松地在本地进行开发而不需要使用云服务器。虽然这只是MySQL的实践操作,但这个例子能够让我们举一反三,更加熟练掌握其它docker容器的使用。

四、引用参考

什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn

[WSL 2] NIC Bridge mode 🖧 (Has TCP Workaround🔨) · Issue #4150 · microsoft/WSL (github.com)

菜鸟教程 - 学的不仅是技术,更是梦想! (runoob.com)