记一次Windows使用virtualbox作为容器作为开发环境运行idea,致每一位windows下的开发者
引言
最近在找工作,需要从浩如烟海的计算机知识中加载完整的jdk进脑子,因此要在我的个人电脑上配置开发环境,但我不想我的个人电脑变得臃肿
为什么在windows下开发需要容器
windows实在是一个优秀的用户系统,而远非开发环境,不管是java开发的gradle或者maven都会在C盘用户文件夹下载大量的依赖jar,python3.12的pip的安装包也在appdata下,go的包…前端的缓存都往C盘挤,经常开发的小伙伴都知道C盘爆满是怎么个痛苦。这时候我们往往八仙过海各显神通:
空间不足我就让它足吧
- C盘扩容(小白使用的方法)
好处:快速方便。缺点:扩了还是不够,或者扩的时候不知道从哪里腾空间
PS:不是,已经2次了,怎么它还要啊
-
建立文件链接(我所用的早期方法,参考[C盘爆满,python pip无法安装应用])
优点:一劳永逸解决某个不断变大的开发依赖储存文件夹,且不用去修改语言的默认配置,比如修改pip的默认依赖安装地址,比如配置maven的m2配置
缺点:C盘备份的时候会把依赖包地址也镜像进去,用git bash rm的时候担心有传送门(隐藏的文件映射)把重要文件删除,也需要针对一个个自增的开发工具文件夹做针对处理也比较麻烦 -
windows 沙盒,这是一个windows的测试沙盒
优点: 不影响本地文件
缺点: 无法持久化开发环境,用后既毁 -
sandboxie-plus,老牌强劲沙盒,适合用作一些windows软件的依附于主机的隔离虚拟环境
优点:直接虚拟目录映射,类似linux的docker,用层叠的方式储存沙盒中安装的开发环境,就算安装在C盘,实际上映射也在沙盒的隔离文件夹里,不会对本地系统进行干扰
缺点: 兼容性不足,idea在沙盒中安装后无法启动,需要收费版可能才行。使用的时候还是不够方便
TNN的我直接不用windows开发了,直接VirtualBox安装Linux作为开发环境
- virtualbox直使用隔离的系统做为开发环境
优点: 不影响当前windows系统,与你的用户系统隔离,随便鼓捣
缺点:磁盘占用(毕竟又安装了一个系统),需要一定安装成本,同时系统也会需要磁盘扩容的一天
为什么要用virtualbox作为开发环境
经过多年window下开发经验,开发一定会把你的系统变得十分臃肿,有时候甚至不知道新特性会吃掉你的那一部分空间,卸载会留下哪些残留。因此我推荐将用户环境和开发环境隔离开来。
但,使用virtualbox隔离容易,但怎么将他们连接起来呢,让我们在用户环境下拥有开发环境的体验。有的
- ssh 永远的神
- http
- https(需要证书)
正文—请选择你的流派
一、vscode
vscode可以在linux上部署code-server通过web访问,不过不推荐,部分插件受限,而且需要
https
才能使用pwa
获取原生的体验(不会和浏览器有按键冲突),主要推荐本地安装vscode,使用remote插件进行远端开发
-
设定: 你的系统是windows7以上,安装了virtualbox,virtualbox安装了linux子系统(rocky linux、ubuntu、deepin)
-
virtualbox中的linux安装sshd,作为服务启动
-
通过
双网卡的方式
或者端口转发(推荐,方便)
的方式使主机(你的windows系统能ssh登录linux)
-
windows本地安装vscode,只装
ssh remote
插件,直接连上虚拟机或者云端的开发环境,你的所有操作都在操作远端开发环境。
下面是在复述插件的用法,可以直接看插件的说明
- 配置windows的ssh配置并连接
Host VBoxLinuxHostName 127.0.0.1User biewangPort 8022
这是定义了ssh的服务器配置,也就是virtualbox的linux子系统的sshd服务开放的22端口,在上面操作中我把他转发到了本机的8022端口
6. 在windows上复制本地的公钥到linux子系统上配置免密登录,如果本地没有钥匙对的化需要ssh-keygen
生成
ssh-copy-id VBoxLinux
- 在插件刷新加载ssh配置后连接
二、IDEA、intellij系列、jetbrains系列
这个流派有多种尝试可以选择:
,类似projector
vscode
的code-server
方案,以web服务(http/https)的方式提供web编辑器,在https时可以通过chrome
的PWA
功能得到最大增强
# 安装docker然后docker run --name idea -p 8887:8887 -it registry.jetbrains.team/p/prj/containers/projector-idea-c
已经不维护了,我尝试了一下idea貌似是2019版的,现在变成gateway
了,劝君少鼓捣
2. ,类似gateway
vscode
的remote
插件单独安装,但我试过了,服务器中的中文乱码,无法解决(两个方案都没有vscode的好啊。。)
怎么办没有方案了么
三、通用系列
ssh永远的神!
可以发现vscode和intellij都尝试了http、https、ssh这三种通信方式,其中http不安全、https配置繁琐、所以使用ssh的vscode-remote是最完美的选择。而idea的ssh方案gateway
尚在襁褓中,那么,我们能否直接使用ssh呢?ssh+X11杀死了比赛,当然其缺点是带宽占用稍高(5G时代、局域网下,小case了)
- windows: 下载安装
VcxSrv
https://sourceforge.net/projects/vcxsrv/ - linux子系统: 安装
openssh-server
也就是sshd
服务,并开启X11Forward
配置 - windows: 配置window下ssh的配置
C:\Users\[!!你的用户名]\.ssh\config
# 自定义你的子系统名字
Host VBoxLinux# ip,因为我是转发到了主机的8022端口,所以用主机回环ipHostName 127.0.0.1User biewangPort 8022# 以下两项很重要,开启X11的连接ForwardX11 yesForwardX11Trusted yes# 以下配置关联你的VcXsrvXAuthLocation D:/Progra~1/VcXsrv/xauth.exe
- 打开
VcxSrv
作为windows的X11渲染器
这个10是任意的,作为变量后面会用到,记住就好
- windows: 打开powershell
# 这里的10就是对应VcxSrv的显示数
$Env:DISPLAY = "127.0.0.1:10"
# VboxLinux在上面有配置,所以我们不用再加参数,如果需要免密登录请自行处理
ssh VBoxLinux
# 这时候已经进入linux了,任意启动gui程序,比如idea,在ubuntu应用商店安装后他的启动命令是intellij-idea-community
biewang@biewang-VirtualBox:~$ intellij-idea-community
好了,现在咱们在没有开发环境的window下,远程启动了linux上的idea显示在本地进行开发,通过终端面板也可以操作linux,可以修改idea热键为window下的热键