Windows11系统下Ubuntu子系统以及Docker运行的一些问题
最近因公司某项目中使用邦奇灯控,需要在 windows
系统下安装一些硬件相关的调试软件,
所以又将自己的办公电脑切换到 windows
系统。
习惯于在 unix
架构系统下开发的我,倒不怎么习惯 windows
系统。
在之前的印象中,windows11
系统总是不那么稳定,偶尔就会莫名的死机,在 windows
系统刚开始推出 “子系统” 时也曾把玩过,但当时爆各种兼容性问题,无法做到真正的 Linux
体验。但现在发现它的 “子系统” 变得完善了,之前的各种兼容性问题差不多得到了解决,观摩下来感觉基本上已可以替代 kvm
虚拟机运行 Linux
体验。
本文主要是记录使用过程中遇到的一些问题以及解决方法的笔记。
PowerShell 启动时出现红色警告,提示没有权限
解决办法,执行如下命令:
set-executionpolicy remotesigned
命令行安装ubuntu子系统
首先要在 控制面版 -> 程序和功能 -> 启用或关闭Windows功能
开启虚拟化相关服务(详百度搜索了解一下)。
开启虚拟化、并重启电脑生效后,以管理员运行 PowerShell
执行如下命令:
wsl --install
wsl --set-default-version 2
wsl --install
命令默认会安装 ubuntu
最新发行版本,例如当前是 ubuntu24.04
wsl端口映射
ubuntu
子系统的ip是一个虚拟网段,局域网无法访问,但开发中有时候需要局域网中对它访问。
例如在 ubuntu
子系统启动了一个 web
程序监听一个端口,局域网中有一台设备要访问这个 web
服务,这时需要将 windows
物理机上的端口映射到 ubuntu
子系统。
查看端口映射
在windows的CMD下运行
netsh interface portproxy show all
添加映射
# netsh interface portproxy add v4tov4 listenport=[win10端口] listenaddress=0.0.0.0 connectport=[虚拟机的端口] connectaddress=[虚拟机的ip]
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=172.29.41.233
根据ip及端口号删除
netsh interface portproxy delete v4tov4 listenaddress=192.168.100.1 listenport=8080
netsh interface portproxy delete v4tov4 listenport=8080
删除所有代理规则
netsh interface portproxy reset
ubuntu子系统下docker运行vue项目
在 ubuntu
子系统,在 docker
容器实例中执行 vue
项目的初始化 yarn instll
报
错:
Error: EPERM: operation not permitted, symlink '../../../mime/cli.js' -> '/mnt/d/....'
解决办法,执行命令带上 --no-bin-links
参数,如下:
yarn install --no-bin-links
……