关于docker:wsl2-开发使用说明总体来讲不建议

46次阅读

共计 3006 个字符,预计需要花费 8 分钟才能阅读完成。

WSL 应用阐明

对于卸载

  • wsl --shutdown
  • wsl --unregister xxxxx
  • 卸载 Ubuntu
  • 关上 Windows 性能敞开:

    • 实用于 LinuxWindows 子系统
    • 虚拟机平台
  • 点击确定

对于导入导出

  • importexport 只是针对磁盘,意思就是网上说的批改 Ubuntu 目录用的导入导出办法的就是批改了磁盘的地位罢了。
    上面是迁徙 Ubuntu 时的操作:

    wsl --export Ubuntu E:\Wsl\Ubuntu\ubuntu.tar
    wsl --unregister Ubuntu
    wsl --import Ubuntu E:\Wsl\Ubuntu E:\Wsl\Ubuntu\Ubuntu.tar --version 2

对于 WSL

  • 针对 Wsl 开发环境做以下总结:

    1. 尽管应用起来像是一个零碎,然而不是,这个肯定要留神
    2. 既然不是一个零碎,就不要关上 windowns 下的我的项目却应用 Ubuntu 下的环境。明天关上 Windowns 下的 Java 我的项目,用的是 Ubuntu 下的 Jdk 后果,死活不能给我的项目增加,平台外面是有的。
    3. 肯定要辨别 Ubuntu 软件和 Wsl.Ubuntu。装置的 Ubuntu 间接关上是 root 权限,Wsl.Ubuntu 是黄色图标。设置外面能够清晰看到执行的命令不一样。
    4. 切记,开发用一个零碎环境。要么 Windows 上面。把服务全副装置到 Ubuntu。要不都在 Ubuntu。
    5. 前一段时间 Flink 服务拜访不了,最初发现 Flink 服务 bind 配置须要改为 0.0.0.0 不能是 localhost。
  • 用户权限

    • 当第一次启动 Ubuntu 时,会让你创立用户,上面设置的就是这个用户。能够很好的解决在 Windwos 下创立文件具备 Root 权限的问题,还有 Vscode 中的 Terminal 也能够关上就是普通用户,不须要在进行设置。
    • 在 cmd 或者 powershell 中执行如下命令

      ubuntu config --default-user xxx
      # wsl 敞开
      wsl --terminate Ubuntu
      # wsl 启动 -u 指定用户
      wsl -d Ubuntu -u xxx

对于代理

代理问题,肯定要开发代理软件的容许局域网。完了之后找到局域网的代理端口。
设置:source proxy.sh set 10811
勾销设置:source proxy.sh unset

#!/bin/sh
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2}')
wslip=$(hostname -I | awk '{print $1}')

set_proxy(){PROXY_HTTP="http://${hostip}:${port}"
    PROXY_HTTPS="http://${hostip}:${port}"

    export http_proxy="${PROXY_HTTP}"
    export HTTP_PROXY="${PROXY_HTTP}"

    export https_proxy="${PROXY_HTTPS}"
    export HTTPS_PROXY="${PROXY_HTTPS}"

    export all_proxy="${PROXY_HTTP}"
    export ALL_PROXY="${PROXY_HTTP}"

    echo "Host ip:" ${hostip}
    echo "WSL ip:" ${wslip}
    echo "Current http  proxy: ${PROXY_HTTP}"
    echo "Current https proxy: ${PROXY_HTTPS}"
    echo "Note: You need to invoke this command with source, like: source proxy.sh set ${port}"
}

unset_proxy(){
    unset http_proxy
    unset HTTP_PROXY
    unset https_proxy
    unset HTTPS_PROXY
    unset ALL_PROXY
    unset all_proxy
    echo "Unset done: http_proxy HTTP_PROXY https_proxy HTTPS_PROXY"
    echo "Note: You need to invoke this command with source: source proxy.sh unset"
}

proxy_info(){echo "Host ip:" ${hostip}
    echo "WSL ip:" ${wslip}
    echo "Current http  proxy: $http_proxy"
    echo "Current https proxy: $https_proxy"
}

if ["$1" = "set"]
then
    if ["$2" = ""]
    then
        port="10809"
        echo "Use default port: ${port}"
    else
        port="$2"
    fi
    set_proxy

elif ["$1" = "unset"]
then
    unset_proxy

elif ["$1" = "info"]
then
    proxy_info
else
    echo "Unsupported arguments: $1. Available aguments: set [port] unset info"
fi

对于 IDEA

ideawsl2 的反对几乎不忍直视!心愿你们改好之后发个布告通知我能用了。
这几天我碰到了很多问题:
1,wsl2 普通用户创立的文件无奈关上。
2,idea 无奈切换到 wsl2 的普通用户下来。
3,idea 每次都要查看 jdk,即便第一次查看后是没问题的。特地慢。
4,apt install 装置的 maven 无奈辨认。
5,特地容易卡死,奔溃!

对于开发

注:wsl2 不倡议跨系统文件调用。咱们思考以下几个情景。

  • wsl 作为服务器
    只须要 wsl 做为服务器,代码本地开发。
    这样须要将本地代码开发完复制一份到 wsl 目录。只能通过文件上传的模式,部署代码。即便在你看来,都在 windows 上,很惋惜,因为不倡议跨零碎拜访文件,这个不倡议的准确度有多高呢?基本上就是说,一个 ls 都会卡一阵。。。
    还有,只能在 windows 开发,近程就会有网络问题。
  • 开发环境
    全副应用 wsl 目录,idea 不反对,vscode 示意适配的很好。jetbrains 的近程开发和 vscode 差不多,都能应用。
    简略来讲就是近程开发,即便你感觉他们都在你的 windows 上,其实隔着很远很远。。。
  • 不晓得说啥
    全副在 windows,请敞开 wsl2 这个垃圾。

对于网络

wsl2 中的所有服务,都只能本地拜访,如果想提供近程拜访,须要让 windows 转发。
波及两条命令:

netsh interface portproxy add v4tov4 listenport=[port] listenaddress=0.0.0.0 connectport=[port] connectaddress=[wsl ip]

netsh.exe advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=[port]

一条通知 windows 转发 wsl 服务端口。一条通知 windows 凋谢防火墙

对于 docker

能够很开心的玩,然而因为网络起因,你不能提供近程服务。

总结

  • 磁盘和网络问题不解决,请不要应用 wsl2,还不如开个虚拟机。
  • 倡议在 windows 本地开发,该装的都装,不要想着应用 wsl2 来隔离开发环境。

正文完
 0