给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
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Docker Desktop 是一款用于运行和管理容器化应用的工具,而 Ubuntu 20.04 WSLWindows 子系统的一种,可以在 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、付费专栏及课程。

余额充值