银河麒麟高级服务器操作系统V10上基于Docker、x11vnc-desktop打造基于容器的在线IDEA arm64开发环境方案

2023-05-16

前言

在线IDE目前表现比较好的有云效,其功能主要还是以Web方式提供在线vscode集成开发环境,启动编辑环境初步推断为内部启动一个专用语言的虚拟机或者容器,clone源码。优点是客户端只需要一个浏览器,缺点是需要熟悉vscode开发环境,对习惯IDEA的开发者不太友好,且部分快捷键由于浏览器问题不能正常使用。

本文探索另外一个在线IDE方案,采用docker容器技术提供底层计算、存储环境,通过x11vnc-desktop在字符界面服务器容器内开启一个图形界面,通过vnc协议对外提供服务。用户通过浏览器vnc协议打开的是一个类似云端主机的远程桌面,在远程桌面内使用熟悉的IDEA进行开发工作。

与云主机(虚拟机)对比,docker方案的核心优势是轻量化,启动快,占用资源少,挂载数据盘方便。


一、编译x11vnc-desktop docker镜像

系统准备

开启ip转发

 sudo echo 1 > /proc/sys/net/ipv4/ip_forward

 

下载源码

git clone https://gitee.com/hknarutofk/x11vnc-desktop.git

解决适配问题

修改Dockerfile.arm64,差异如下

diff --git a/Dockerfile.arm64 b/Dockerfile.arm64
index 12a0bb4..9e4dca6 100644
--- a/Dockerfile.arm64
+++ b/Dockerfile.arm64
@@ -167,5 +167,6 @@ WORKDIR $DOCKER_HOME
 ENV DOCKER_CMD=start_vnc
 
 USER root
-ENTRYPOINT ["/sbin/my_init", "--quiet", "--", "/sbin/setuser", "ubuntu"]
+# fix kylin server V10 bug: permission denied, use root user
+ENTRYPOINT ["/sbin/my_init", "--quiet", "--", "/sbin/setuser", "root"]
 CMD ["$DOCKER_CMD"]

将启动用户由ubuntu改为root,原因是麒麟V10环境打包镜像部分目录权限错误

编译镜像

cd x11vnc-desktop/
sh buildArm64Image.sh 

查看编译出来的镜像

[root@172-17-98-9 x11vnc-desktop]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
x11vnc/desktop      latest              c7f04e0b9cb5        14 seconds ago      1.43GB

 

二、使用步骤

1.启动一个实例

docker run -it --rm -p 6080:6080 x11vnc/desktop:latest 

输出日志

* Starting system message bus dbus                                                                                                                                                    [ OK ] 
 * Starting OpenBSD Secure Shell server sshd                                                                                                                                           [ OK ] 
Open your web browser with URL:
    http://localhost:6080/vnc.html?resize=downscale&autoconnect=1&password=GVkt9PAn
or connect your VNC viewer to localhost:5900 with password GVkt9PAn

2.浏览器访问vnc图形界面

打开火狐浏览器,输入地址:http://localhost:6080/vnc.html?resize=downscale&autoconnect=1&password=GVkt9PAn

至此,我们已经成功采用docker容器方案开启了一个远程桌面服务

3. 准备编译环境

在noVNC远程桌面内的终端(LXTerminal)内执行指令

apt update
apt install -y maven openjdk-11-jdk

 

4. 安装IDEA

打开容器内的浏览器

下载IDEA

下载完成,打开文件管理器

进入/root/Downloads目录,释放idea到当前目录

进入释放目录,启动idea

至此,一个基于容器化的在线IDEA开发环境就基本部署完成。

 


总结

本文是银河麒麟高级服务器操作系统V10 arm64架构下在线IDE的一个探索方案,文中后续的安装编译环境、安装IDEA等均可通过docker的目录挂载能力挂载不同的目录实现动态创建容器内编译、运行环境。相对于基于vscode的web访问模式,通过vnc远程桌面访问更接近本地开发体验。

后续还需要解决更加友好的UI、中文显示、输入等等方面问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

银河麒麟高级服务器操作系统V10上基于Docker、x11vnc-desktop打造基于容器的在线IDEA arm64开发环境方案 的相关文章

随机推荐

  • 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解

    目录 一 匈牙利算法1 算法背景及思想2 最大匹配3 最优匹配 完美匹配4 增广路径5 代码实现6 匈牙利算法总结6 1 深度优先6 2 广度优先 二 KM算法思想及局限性代码示例1 定义KM方法类2 定义权重数值 xff0c 执行主函数
  • linux/mm/memory.c/int share_page(unsigned long address)

    share page tries to find a process that could share a page with the current one Address is the address of the wanted pag
  • sumo教程 Hello World

    sumo教程 Hello World 注意事项 确保安装的sumo版本至少为1 4 0 以便能够使用本教程中显示的所有功能 要求 sumo gui和netedit的版本大于等于1 4 0 介绍 这个教程服务于第一次使用sumo的人员 我们准
  • 教程——OSMWebWizard

    教程 OSMWebWizard 有关事宜 osm web wizard提供一种最简单的方式开始sumo 基于一种openstreetmap的摘抄 你可以配置随机流量需求和可视化一种场景在sumo gui 这个教程可以指导你一步步从选择地图类
  • sumo-绕圈行驶

    绕圈行驶 在本教程中 xff0c 我们将使用 netedit 构建一个简单的圆形网络 xff0c 并使用重路由器使车辆绕圈行驶 所有定义文件都可以在 lt SUMO HOME gt docs tutorial circles 目录中找到 本
  • 教程——sumolympics

    SUMOlympics 本教程针对不同的交通模式设置了比赛 xff08 集体 100 米冲刺 xff09 您将学习如何在 netedit 中创建特殊车道和 xff08 非常简单的 xff09 红绿灯 xff0c 使用不同的车辆类别来定义车辆
  • sumo 教程——高速公路

    本教程涵盖了在多车道高速公路上创建异构流以及修改和保存视图设置的非常基本的元素 修建高速公路 编辑几何点 打开 netedit 创建一个虚构的高速公路 我们一开始就保持这个非常简单 xff0c 并考虑一个没有入口或出口的路段 按e进入边创建
  • sumo教程——Manhattan

    介绍 本教程介绍了如何在 SUMO 中构建曼哈顿移动模型 在这个模型中 xff0c 固定数量的车辆在曼哈顿电网网络上随机行驶 所有文件也可以在 lt SUMO HOME gt docs tutorial manhattan 目录中找到 创建
  • 基于51单片机的双通道DHT11温湿度显示器(LCD1602)

    基于STC89C51单片机的双通道DHT11实时温湿度显示系统 xff08 LCD1602 xff09 前言题目要求实现的功能思路介绍 代码部分注意事项驱动部分LCD1602驱动按键驱动 主要模块初始化DHT11驱动中断服务程序显示函数主函
  • 【21-7-25笔记】SR(Segment Routing)详解

    第一卷 第一章 简介 1 11 SRv6 SRv6 将SR框架应用到IPv6数据平面 SRv6对IPv6的价值至关重要 xff0c 将极大地影响未来的IP基础设施部署 xff0c 无论是在数据中心 xff0c 大规模汇聚网络 xff0c 还
  • javascript编写学生,查询学校学生

    lt DOCTYPE html gt lt head gt lt head gt lt style gt table width 400px height 400px border 1px solid red div float left
  • A-Frame基础用法

    简介 x1f170 Frame 是一个用来构建虚拟现实 xff08 VR xff09 应用的网页开发框架 由WebVR的发起人Mozilla VR 团队所开发 xff0c 是当下用来开发WebVR内容主流技术方案 WebVR是一个完全开源的
  • 双色球小程序(关于对数组的使用)

    span class token keyword package span 双色球 span class token punctuation span span class token keyword import span java sp
  • IDEA: 遇到问题Error during artifact deployment. See server log for details,解决

    目录 一 jar 包有有些没能识别 xff0c tomcat没有配置好 xff01 二 这个一般代码错了 xff1a 三 使用更低一点版本的Tomcat 在学习JavaWeb的时候 xff0c 遇到一个著名的报错 xff1a Error d
  • VNC死机的处理方法

    目录 1 打开MobaXterm并登录 2 连续输入以下命令 xff1a 1 打开MobaXterm并登录 2 连续输入以下命令 xff1a conda deactivate 回车 vncserver kill 3 回车 vncserver
  • js异步操作

    一 异步操作概述 单线程模型 单线程模型指的是 xff0c JavaScript 只在一个线程上运行 也就是说 xff0c JavaScript 同时只能执行一个任务 xff0c 其他任务都必须在后面排队等待 程序里面所有的任务 xff0c
  • 【写sql时遇到的bug:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber】

    报错 xff1a org xml sax SAXParseException lineNumber 1 columnNumbe 修改后的代码片段 在使用 64 Select 注解编写sql的时候 xff0c 原先写的 gt 61 和 lt
  • @Scheduled 定时任务不执行

    一 排查代码中添加的定时任务步骤是否正确 启动类上加 64 EnableScheduling 注解定时任务类上加 64 Component定时方法上加 64 Scheduled span class token annotation pun
  • (09)Linux命令【mkdir命令】

    09 Linux命令 mkdir命令 1 1 目录 1 目录 2 Linux系统介绍 3 Linux 应用领域 4 Linux命令 mkdir命令 5 结语 1 2 Linux系统介绍 Linux 全称GNU Linux 是一种免费使用和自
  • 银河麒麟高级服务器操作系统V10上基于Docker、x11vnc-desktop打造基于容器的在线IDEA arm64开发环境方案

    前言 在线IDE目前表现比较好的有云效 xff0c 其功能主要还是以Web方式提供在线vscode集成开发环境 xff0c 启动编辑环境初步推断为内部启动一个专用语言的虚拟机或者容器 xff0c clone源码 优点是客户端只需要一个浏览器