先说下背景,主要是 web 开发,都熟悉 linux ,10 人左右,当前用的方案是 wsl2+docker ,vscode 连到 wsl2 写代码,docker 实现运行环境。其实这样也没啥大问题,但是现在有台闲置机器( pc 机 16G )自己想折腾一下-_-
目前能想到的远程开发方案列一下
基于 esxi 或者 kvm 给每个人分配一个虚拟机,vscode+ssh remote 开发,在虚拟机里各自安装 docker 运行项目。主要是担心性能不够
宿主机上跑 docker ,每人分配一个 docker 容器,用 docker in docker 的方案来实现运行环境。已经折腾了下,开发代码没啥问题,但是每个容器内都有操作宿主机 docker daemon 的能力有点不可控,mounts 也是宿主目录而非容器内目录。主要是没搞定完全隔离
希望有前辈推荐下方案,解答下方案的问题,感谢
![]() | 1 perfectlife 2023-01-04 17:15:13 +08:00 ![]() 感觉 16g 的机器没必要这么折腾吧 |
![]() | 2 debuggerx 2023-01-04 17:20:45 +08:00 感觉这个“远程开发环境”没啥必要,对开发体验没啥提升,可能还不如搞 CI 跑自动化啥的。 |
4 r4y 2023-01-04 17:26:25 +08:00 可以看看 MS 的 Codeserver 的方案,来做远程开发。 在结合 Git action 来打镜像,和部署发布 |
5 sanwv OP @perfectlife 能提升下体验再升级下硬件也可以,现在对准入门槛还没直观认知 |
6 sanwv OP @r4y 自己也搜索过方案,有关注到,只看了一眼,现在的认知是 Codeserver 是上层软件,现在的问题是如何建基础架构 |
![]() | 7 ixixi 2023-01-04 17:29:40 +08:00 via Android esxi 我自己用,32g6cpu 感觉很好,10 人用这 16g 的 pc 开发可能不太够吧? |
![]() | 8 brust 2023-01-04 17:30:29 +08:00 远程开发不用公网吗 |
10 jinlong 2023-01-04 17:57:51 +08:00 重新配一台机器吧,e5 2696v3 * x 2 ( 36 核 72 线程) + 128G or 256G DDR3 内存 + X99 F8D + 1000W 电源,3000 ~ 4000 成本,ESXI 开虚拟机随便他们造。 |
11 ltkun 2023-01-04 18:04:38 +08:00 PVE+lxc 比较不挑硬件 又更轻量级 全开源实现主要 |
![]() | 13 cheng6563 2023-01-04 18:22:45 +08:00 内核新的话可以 podman in docker |
14 me221 2023-01-04 19:04:43 +08:00 不如买 Github CodeSpace |
![]() | 15 janxin 2023-01-04 21:49:52 +08:00 为了上方案而上方案没什么意义啊 |
![]() | 17 oott123 2023-01-04 23:34:40 +08:00 via Android 你确定你这是 docker in docker ,而不是把宿主的 docker socket 挂到了 docker 里面? |
![]() | 18 wangritian 2023-01-04 23:57:21 +08:00 什么 web 项目非要远程开发 |
19 dayeye2006199 2023-01-05 03:06:20 +08:00 一台机器,每个人开个用户,大家 SSH 上去用就行。 一些调试端口冲突可能是个问题,但是也没啥大不了,大家用不一样的端口就行。 |
![]() | 20 worldquant 2023-01-05 03:41:23 +08:00 128g 的 server 才这么搞你这属于瞎折腾 |
![]() | 21 Nnq 2023-01-05 06:15:59 +08:00 就 1 台 16G 的机器,如果个人 PC 配置都不错的话,大可不必这么折腾,没必要,没有人专门维护,浪费在折腾上的时间还不如多出几个 features |
![]() | 22 yimiaoxiehou 2023-01-05 08:18:45 +08:00 就这配置,瞎折腾 |
![]() | 23 idblife 2023-01-05 08:44:06 +08:00 via iPhone 16G 的机器性能可能还不如员工电脑,别折腾了 |
![]() | 24 litchinn 2023-01-05 08:59:58 +08:00 服务部署是有另外的服务器吗,不然 16g 干脆直接拿来部署服务给前端调试算了,或者装一些开发用的服务,比如日志工具,还有禅道或者 jira 等 |
![]() | 25 hanxiV2EX 2023-01-05 09:00:05 +08:00 via Android 直接装 linux 服务器版本,一人分配一个 docker 容器,关键就是分配出网端口段和磁盘,容器里随便别人怎么搞,支持一下 docker in docker 更好,别人可以继续开子容器,限定每个人的资源就好。 |
26 penzi 2023-01-05 09:16:55 +08:00 小项目折腾远程开发是没事找事。本机都能跑起来 |
![]() | 27 xsir2020 2023-01-05 09:35:47 +08:00 我一直以为远程开发是在异地办公,没想到这是远程调试啊~ |
![]() | 28 thetbw 2023-01-05 09:35:49 +08:00 |
![]() | 29 8355 2023-01-05 09:43:19 +08:00 单纯开发环境除非有特殊条件强依赖 不然自己本地不是效率更高?为啥要这样做呢 OP 介绍下 |
30 sanwv OP @oott123 现在是把宿主 socket 挂到 docker 里,遇到的问题是容器内有全局管理权限,还有新启容器再映射的是宿主机目录。感觉能实现完全隔离的 docker in docker 也能满足需求,问题是:1.能否实现完全隔离 2.性能比虚拟机模式好吗否则还不如直接用虚拟机方案了 |
31 sanwv OP @8355 现在是每人都在各自电脑上基于 wsl2 实现环境统一,想折腾下的原因无外乎对远程开发的美好幻想,不用纠结硬件是否够用,其实方案可行的话也是先我自己用起来,不会折腾其他人 |
![]() | 32 zoharSoul 2023-01-05 10:07:24 +08:00 感觉不如本地开发方便 |
![]() | 33 IvanLi127 2023-01-05 10:12:35 +08:00 via Android 建议用 PVE 的 LXC 容器,预装 docker 环境,分给每个人,让他们用远程开发容器就好了。远程开发的话网络得好,不然影响效率。 |
![]() | 34 james2013 2023-01-05 10:23:19 +08:00 小团队使用远程开发环境有点得不偿失 使用远程开发环境可能大公司使用效果好些,对于代码有严格保密需求的好些 本机内存 32g,固态硬盘,配置高,又没有延时,本机开发不香吗?大家一起去挤远程机子,如果远程机子出现问题,大家都只能干瞪着眼了 开发环境只需要在机器上配置一次就可以了,熟练后可能 1 天时间都不到 |
35 penzi 2023-01-05 10:31:59 +08:00 用远程开发环境 1. 本地性能跑不起来。服务必须跑在 512G 内存的机器上,编译必须要 96 核心的机器,IDE 跑起来就要占 100G 内存 2. 本地环境部署不起来。网关,数据库,消息队列,hdfs 等等全都是一个团队维护的集群,每个组维护的服务还依赖了一百个上下游的服务。这时候一个远程开发环境能够让你的 debug 服务轻松接入测试环境。 3. 奇葩的保密政策。不允许代码下载到本地 但是 1. 你们的服务本地 wsl2 就能跑起来,现在有一台 16G 的机器可能比本地机器还差 2. 所有服务 docker 就能解决问题 3. 没有奇葩保密政策 我看不到有远程开发的必要 |
36 penzi 2023-01-05 10:37:09 +08:00 我觉得你要做的应该是怎么优化这个本地开发的环境。 比如把你们的代码想办法跑到 Windows 上,让大家能用上 JetBrains 比如一个一键部署环境的脚本 |
37 sanwv OP @maggch97 感谢,综合大家的回复确实没必要非上远程开发,没这样搞的理由和硬件。整理思路,把这个想法当作自己的一次尝试,学习实践下远程开发的系统搭建 |
38 sanwv OP @IvanLi127 昨晚安装了一下 pve ,还没深入。目测 lxc 和 docker 玩法是一样的,因为我们是用 docker compose 来实现运行,感觉还是会遇到 docker in docker 如何实现完全隔离的问题 |
39 wuchujie 2023-01-05 14:49:13 +08:00 docker in docker 可能比较好。能自己继续装开发需要的数据库等包。 我最近看了一下这个项目 https://github.com/yqlbu/neovim-server 自己折腾了一版本 web 端编程。主要是我没用过 vscode 和 vscode remote 相关的不好评价。 我这边是手顺把以前 vim script 的配置改 lua 了。用起来挺爽的。代码补全等各个方面都 OK 。而且我跑这个镜像的服务器也是内网的。速度很快。甚至我还装了个 tmux 用 web 登录开发机再用 tmux 登录远程服务器 |
42 agmx321 2023-01-05 16:33:21 +08:00 pc 机器 16G 性能可能本身会有局限,考虑到成本效率及 pc 硬件的不可控性,10 人共用的话,可以考虑: 1.宿主机安装 Ubuntu20.04 桌面版并装 kvm(最简单),公共服务直接在 Ubuntu docker 上跑,需要强隔离的可以放在 kvm 里面;免费的 MobaXterm 可以直接图形化创建 kvm 机器,不用大家都需要会后台创建 kvm 。 2.或者宿主机 Ubuntu20.04 配合 virtualbox+vagrant (稍微要配置下,后续 vagrantfile 用起来很方便)个人不推荐你用这种,pc 16G 的机器没必要这么折腾了,仅提供思路; 如果还要使用网络隔离: 1.可以直接使用 Ubuntu 的 iptables 2.如果大家在家里也想访问公司里面的 ubuntu 宿主机的服务,可以使用 tailscale, 免费的额度就够你们用了; |
![]() | 43 learningman 2023-01-05 16:50:38 +08:00 |
![]() | 44 zhouu 2023-01-05 17:37:46 +08:00 部署一套 coder |
![]() | 45 greatghoul 2023-01-05 23:58:39 +08:00 试试 gitpod 的 project? |
![]() | 46 uncat 2023-01-06 01:20:59 +08:00 我们在用的方案: - 一台物理服务器 7*24 小时运行 Ubuntu LTS - 每个人有一个普通帐号(没有 root 权限)基于 vscode remote development 连入,统一开发环境 - 物理服务器通过 libvirtd 自建虚拟化提供任意数量虚拟机 - 配置 bridge 网络实现虚拟机、物理机在同一个局域网 - 封装脚本,实现虚拟机一键快照和回滚 - 对虚拟机发起测试,测试后如果需要清理现场,恢复快照实现重复测试 - 自建 wireguard + frpc 实现远程办公接入 |
47 Akkuman 2023-01-06 08:54:10 +08:00 via Android docker in docker 试试 firecracker ,严格来说是 docker in 轻量虚拟机 |
49 sanwv OP @Akkuman 刚看了一眼 firecracker ,确实严格来说是 docker in 轻量虚拟机,我周末仔细研究下这个东西 赞 |
![]() | 51 uncat 2023-01-06 12:51:05 +08:00 通过 frpc tcp 在 frps 服务器暴露 wireguard ,签发 wireguard 证书给开发者,远程开发者连接 wireguard 相当于跟所有的虚拟机、物理机在同一个内网 |
![]() | 52 uncat 2023-01-06 12:53:33 +08:00 物理服务器在办公区机房,办公区网络,无公网 IP |