当前位置: 首页 > news >正文

记一次Windows使用virtualbox作为容器作为开发环境运行idea,致每一位windows下的开发者

引言

最近在找工作,需要从浩如烟海的计算机知识中加载完整的jdk进脑子,因此要在我的个人电脑上配置开发环境,但我不想我的个人电脑变得臃肿

为什么在windows下开发需要容器

windows实在是一个优秀的用户系统,而远非开发环境,不管是java开发的gradle或者maven都会在C盘用户文件夹下载大量的依赖jar,python3.12的pip的安装包也在appdata下,go的包…前端的缓存都往C盘挤,经常开发的小伙伴都知道C盘爆满是怎么个痛苦。这时候我们往往八仙过海各显神通:

空间不足我就让它足吧

  1. C盘扩容(小白使用的方法)
    好处:快速方便。缺点:扩了还是不够,或者扩的时候不知道从哪里腾空间

PS:不是,已经2次了,怎么它还要啊

  1. 建立文件链接(我所用的早期方法,参考[C盘爆满,python pip无法安装应用])
    优点:一劳永逸解决某个不断变大的开发依赖储存文件夹,且不用去修改语言的默认配置,比如修改pip的默认依赖安装地址,比如配置maven的m2配置
    缺点:C盘备份的时候会把依赖包地址也镜像进去,用git bash rm的时候担心有传送门(隐藏的文件映射)把重要文件删除,也需要针对一个个自增的开发工具文件夹做针对处理也比较麻烦

  2. windows 沙盒,这是一个windows的测试沙盒
    在这里插入图片描述

    优点: 不影响本地文件
    缺点: 无法持久化开发环境,用后既毁

  3. sandboxie-plus,老牌强劲沙盒,适合用作一些windows软件的依附于主机的隔离虚拟环境
    优点:直接虚拟目录映射,类似linux的docker,用层叠的方式储存沙盒中安装的开发环境,就算安装在C盘,实际上映射也在沙盒的隔离文件夹里,不会对本地系统进行干扰
    缺点: 兼容性不足,idea在沙盒中安装后无法启动,需要收费版可能才行。使用的时候还是不够方便

TNN的我直接不用windows开发了,直接VirtualBox安装Linux作为开发环境

  1. virtualbox直使用隔离的系统做为开发环境
    优点: 不影响当前windows系统,与你的用户系统隔离,随便鼓捣
    缺点:磁盘占用(毕竟又安装了一个系统),需要一定安装成本,同时系统也会需要磁盘扩容的一天

为什么要用virtualbox作为开发环境

经过多年window下开发经验,开发一定会把你的系统变得十分臃肿,有时候甚至不知道新特性会吃掉你的那一部分空间,卸载会留下哪些残留。因此我推荐将用户环境和开发环境隔离开来。
但,使用virtualbox隔离容易,但怎么将他们连接起来呢,让我们在用户环境下拥有开发环境的体验。有的

  1. ssh 永远的神
  2. http
  3. https(需要证书)

正文—请选择你的流派

一、vscode

vscode可以在linux上部署code-server通过web访问,不过不推荐,部分插件受限,而且需要https才能使用pwa获取原生的体验(不会和浏览器有按键冲突),主要推荐本地安装vscode,使用remote插件进行远端开发

  1. 设定: 你的系统是windows7以上,安装了virtualbox,virtualbox安装了linux子系统(rocky linux、ubuntu、deepin)

  2. virtualbox中的linux安装sshd,作为服务启动

  3. 通过双网卡的方式或者端口转发(推荐,方便)的方式使主机(你的windows系统能ssh登录linux)
    在这里插入图片描述

  4. windows本地安装vscode,只装ssh remote插件,直接连上虚拟机或者云端的开发环境,你的所有操作都在操作远端开发环境。

下面是在复述插件的用法,可以直接看插件的说明

  1. 配置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
  1. 在插件刷新加载ssh配置后连接
    在这里插入图片描述

二、IDEA、intellij系列、jetbrains系列

这个流派有多种尝试可以选择:

  1. projector ,类似vscodecode-server方案,以web服务(http/https)的方式提供web编辑器,在https时可以通过chromePWA功能得到最大增强
# 安装docker然后docker run --name idea -p 8887:8887 -it registry.jetbrains.team/p/prj/containers/projector-idea-c

已经不维护了,我尝试了一下idea貌似是2019版的,现在变成gateway了,劝君少鼓捣
2. gateway,类似vscoderemote插件单独安装,但我试过了,服务器中的中文乱码,无法解决(两个方案都没有vscode的好啊。。)

怎么办没有方案了么

三、通用系列

ssh永远的神!
可以发现vscode和intellij都尝试了http、https、ssh这三种通信方式,其中http不安全、https配置繁琐、所以使用ssh的vscode-remote是最完美的选择。而idea的ssh方案gateway尚在襁褓中,那么,我们能否直接使用ssh呢?ssh+X11杀死了比赛,当然其缺点是带宽占用稍高(5G时代、局域网下,小case了)

  1. windows: 下载安装VcxSrv https://sourceforge.net/projects/vcxsrv/
  2. linux子系统: 安装openssh-server也就是sshd服务,并开启X11Forward配置
  3. 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
  1. 打开VcxSrv作为windows的X11渲染器
    在这里插入图片描述
    这个10是任意的,作为变量后面会用到,记住就好
    在这里插入图片描述
    在这里插入图片描述
  2. 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下的热键
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android网络安全:如何防止中间人攻击
  • 微前端场景下如何做样式隔离?
  • IP地址封装类(InetAddress类)
  • 清华大学在感前光学计算方向获得进展
  • 疯狂Java讲义_08_泛型
  • 2024年云计算企业CRM应用与选型研究报告
  • 如何看待云原生数据库一体化的技术趋势?
  • 文件属性获取
  • Java 并发集合:阻塞队列集合介绍
  • .NET8使用VS2022打包Docker镜像
  • Xshell8最新版体验(业界最强大的SSH连接工具)
  • ZPScan网络扫漏工具-子命令说明
  • C#如何解决引用类型的“深度”克隆问题
  • 细说MCU检测按键输入的外部中断和修改HAL_GPIO_EXTI_IRQHandler() 的实现方法
  • 贪吃蛇(使用QT)
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • input实现文字超出省略号功能
  • Java反射-动态类加载和重新加载
  • ng6--错误信息小结(持续更新)
  • nodejs:开发并发布一个nodejs包
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • V4L2视频输入框架概述
  • WebSocket使用
  • win10下安装mysql5.7
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 经典排序算法及其 Java 实现
  • 力扣(LeetCode)965
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 怎样选择前端框架
  • 智能网联汽车信息安全
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​520就是要宠粉,你的心头书我买单
  • ​MySQL主从复制一致性检测
  • # Maven错误Error executing Maven
  • #Java第九次作业--输入输出流和文件操作
  • #数据结构 笔记一
  • (2)(2.10) LTM telemetry
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (分布式缓存)Redis哨兵
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (篇九)MySQL常用内置函数
  • (三分钟)速览传统边缘检测算子
  • (原)Matlab的svmtrain和svmclassify
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)树状数组
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .DFS.
  • .NET Project Open Day(2011.11.13)
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?