先说下背景,主要是 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 2
感觉 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
maggch97 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
maggch97 2023-01-05 10:31:59 +08:00
用远程开发环境
1. 本地性能跑不起来。服务必须跑在 512G 内存的机器上,编译必须要 96 核心的机器,IDE 跑起来就要占 100G 内存 2. 本地环境部署不起来。网关,数据库,消息队列,hdfs 等等全都是一个团队维护的集群,每个组维护的服务还依赖了一百个上下游的服务。这时候一个远程开发环境能够让你的 debug 服务轻松接入测试环境。 3. 奇葩的保密政策。不允许代码下载到本地 但是 1. 你们的服务本地 wsl2 就能跑起来,现在有一台 16G 的机器可能比本地机器还差 2. 所有服务 docker 就能解决问题 3. 没有奇葩保密政策 我看不到有远程开发的必要 |
36
maggch97 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
|