给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通

我们知道wsl2是基于hyper-v的虚拟机,每次重新启动的时候,都会重新拉一个新的hyper-v虚拟机实例,然后虚拟网卡的IP是dhcp随机分配的,如果作为开发系统用,就会比较烦每次都要换一个IP。

有人提供了个脚本,他写了个bat脚本在windows里面把wsl拉起来,同时用root权限给wsl实例分配了一个固定的IP,然后在windows宿主分配了一个同网段的IP,实现了固定IP访问wsl。 这个脚本我研究了一下,在wsl拉起来的时候,可以顺便把需要启动的服务,比如docker拉起来,这样同时也解决了wsl不支持systemd服务自启动问题。

@echo off
setlocal enabledelayedexpansion

:: 重新拉起虚拟机,并且用root身份,启动ssh服务和docker服务
wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
    echo docker start success
    :: 设置wsl2虚拟机ubuntu的ip
    wsl -u root ip addr | findstr "192.168.10.101" > nul
    if !errorlevel! equ 0 (
        echo wsl ip has set
    ) else (
        :: 没有的话给安排上
        wsl -u root ip addr add 192.168.10.101/24 broadcast 192.168.10.0 dev eth0 label eth0:1
        echo set wsl ip success: 192.168.10.101
    )


    :: 设置windows宿主机网卡vEthernet (WSL)的IP,与虚拟机同一网段
    ipconfig | findstr "192.168.0.102" > nul
    if !errorlevel! equ 0 (
        echo windows ip has set
    ) else (
        netsh interface ip add address "vEthernet (WSL)" 192.168.10.102 255.255.255.0
        echo set windows ip success: 192.168.10.102
    )
)
pause

右键点击脚本,”以管理员身份运行“,就能完成设置。这样,在WSL虚拟机ubuntu中,网卡eth0有两个IP,其中172.19.62.245用于和互联网通信,192.168.10.101用于和windows宿主机通信。

# ip a

eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:9e:9a:db brd ff:ff:ff:ff:ff:ff
    inet 172.19.62.245/20 brd 172.19.63.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 192.168.10.101/24 brd 192.168.10.0 scope global eth0:1
       valid_lft forever preferred_lft forever
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Docker Desktop 是一款用于运行和管理容器化应用的工具,而 Ubuntu 20.04 WSL 是 Windows 子系统的一种,可以在 Windows 上运行 Ubuntu Linux,让开发者可以在 Windows 环境中进行开发和测试。 在使用 Docker Desktop 时,可以与 Ubuntu 20.04 WSL 进行集成,以便在 Windows 环境下更方便地使用 Docker。集成后,可以在 Ubuntu 20.04 WSL 中安装和运行 Docker Engine,与在常规的 Ubuntu 环境中没有太大的差别。 然而,有时可能会遇到"Distribution Ubuntu-20.04 unexpec"的错误。这常是由于某些原因引起的不可预期的错误或问题。这可能是由于操作系统或软件的不稳定性、版本冲突、配置错误、网络问题等引起的。 要解决这个问题,有几个步骤可以尝试: 1. 检查 Docker Desktop 和 Ubuntu 20.04 WSL 的版本是否兼容,确保使用了最新的版本。 2. 检查系统和软件的配置是否正确,确保没有出现冲突或错误的设置。 3. 检查网络连接是否正常,确保能够访问互联网和 Docker 仓库。 4. 尝试重新安装或更新 Docker Desktop 和 Ubuntu 20.04 WSL,以修复可能的损坏或错误。 如果问题仍然存在,可以尝试搜索相关的错误信息或寻求帮助,以找到更具体的解决方法。同时,也可以尝试使用其他类似的工具或方法来满足容器化应用的需求。 ### 回答2: 当Docker Desktop与Ubuntu 20.04 WSL集成时出现异常,可能有几种可能原因和解决方法。 首先,确保你的Docker Desktop和WSL都是最新版本,并且已经正确安装和配置。 如果你的Docker Desktop和WSL版本不兼容,可能会导致集成过程中出现异常。请检查并更新它们。 其次,检查Docker Desktop的设置是否正确。进入Docker Desktop的设置菜单,确保“WSL Integration”选项已启用,并选择你要与WSL集成的Ubuntu 20.04版本。 如果集成过程中仍然存在问题,可以尝试重新安装Docker Desktop和WSL。首先卸载Docker Desktop和WSL,然后重新安装它们。确保按照官方文档上的步骤进行操作。 另外,你还可以尝试重启计算机,有时候重启可以帮助解决一些集成问题。 如果以上方法仍然无法解决问题,建议查看Docker Desktop和WSL的官方文档,寻找可能的故障排除方法或寻求技术支持。 总之,当Docker Desktop与Ubuntu 20.04 WSL集成过程中出现异常时,可以过确保软件版本兼容、检查设置并重新安装软件来解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值