大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
在使用win10上的WSL2时遇到了一个问题:每次重启电脑或wsl2后,wsl2子系统的ip地址就会发生改变。后来在wsl的github上找到了相关的解决方案。
当前问题
在使用win10的wsl2子系统时,windows会通过虚拟交换机给win10本机与wsl2子系统各自会分配一个ip地址,当windows电脑重启并再次打开wsl2时,虚拟交换机会被重新创建,分配给它们的ip地址也会随着改变。
目前我在wsl2上安装了docker环境,启动了一个mysql容器并映射了3306端口到docker宿主机的33306,这样windows可以通过wsl2-ip:33306
访问mysql,docker容器之间也可以通过wsl2-ip:33306
访问mysql。 但是wsl2子系统的ip地址不固定,导致每次重启wsl2都会查看当前的ip地址并修改相关链接配置,十分不方便。
解决方案
解决方案是我在wsl的github上的issue上看到的 ===> 传送门。
方案的大致内容就是:既然固定不了wsl2的ip地址,那么就在启动wsl2后主动给它设置一个ip地址。
我按照上面的思路并结合自己的需求编写了一个简单的bat脚本,每当我开机后需要用到docker时就执行该脚本,这样就能够通过固定的ip地址去访问服务了。
@echo off
setlocal enabledelayedexpansion
wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
echo docker start success
:: set wsl2 ip
wsl -u root ip addr | findstr "192.168.169.2" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
echo set wsl ip success: 192.168.169.2
)
:: set windows ip
ipconfig | findstr "192.168.169.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
echo set windows ip success: 192.168.169.1
)
)
pause
自己首先划定了一个虚拟的局域网络 192.168.169.1/28
,然后将192.168.169.1
分配给了windows,192.168.169.2
分配给了wsl2,这样就可以通过指定的ip地址访问相应系统上的服务了。
上述的ip地址可以自己自定,只要不跟已有局域网络相冲突即可。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184387.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...