当前位置: 首页 > 科技观察

Webtops-使用docker运行Linux桌面

时间:2023-03-20 14:47:43 科技观察

容器的流行让很多东西的虚拟化和容器化成为现实。很多人想多了,想把整个OS都跑在容器里,把容器当作虚拟机来用。一般不推荐这种想法,但也不是不可以。今天,虫虫将介绍一个名为Webtops的项目,用户可以通过该项目在Web浏览器中运行Linux桌面,并以容器化的方式进行部署。概述Webtops项目反对小型、单一功能Docker的一般理念,但它必须是功能性的。项目需要在容器中运行以下服务:(1)GuacamoleServer:Apache基金会下的无客户端远程桌面网关。这是实现Web(浏览器)访问远程桌面的关键。(2)xrdpServer:使用RDP(MicrosoftRemoteDesktopProtocol)提供远程计算机的图形登录。xrdp接受来自各种平台RDP客户端的连接,包括reeRDP、rdesktop、NeutrinoRDP和Microsoft远程桌面客户端。(3)Pulseaudio:一种在Web上运行的跨平台声音服务。(4)自定义nodejs前端:(5)Webtops项目可以做:像素完美分辨率基本窗口管理器音频支持使用RDP协议剪贴板支持屏幕键盘支持远程文件上传/下载管理Webtops在设计时考虑了容器它是用构建基本镜像的设计理念,因此支持应用扩展,可以轻松嵌入任何LinuxGUI应用。在桌面环境中,用户可以按需安装特定的包,并根据需要进行定制。安装部署因为是基于容器化部署,所以安装非常简单,直接用一条docker命令即可完成部署:dockerrun-d\--name=webtop\-ePUID=1000\-ePGID=1000\-eTZ=Europe/London\-p3000:3000\-v/path/to/data:/config\--shm-size="1gb"\--restartunless-stopped\ghcr.io/linuxserver/webtop然后通过浏览器访问:localhost:3000,可以访问,这是AlpineXFCE桌面环境:屏幕左侧是一个箭头,可以用来展开一些内置的远程交互功能的菜单,这个菜单也可以使用ctrl+alt+shift组合键打开和关闭:在弹出的菜单中,可以启动文件浏览器,弹出软键盘(适用于手机或触摸板)和保存剪贴板。在文件浏览器中,直接实现了用户当前系统和远程系统的文件上传下载等操作。用户当前剪贴板中的内容首先被复制到剪贴板框中,然后才能在远程机器上使用。Preferences目前除了支持Alpine之外还支持Ubuntu,支持的桌面系统包括:XFCEKDEMATEi3OpenboxIceWM访问认证默认为abc用户启用镜像,无需认证即可访问。abc用户的默认密码也是abc。如果想在访问界面的时候修改这个密码并开启鉴权,需要在服务器上执行:dockerexec-itwebtoppasswdabc然后通过localhost:3000/?login=true访问会默认打开xrdp登录管理器,在这里可以输入你的用户名与密码。更新如前所述,容器化的Linux桌面环境实际上与经典的Docker理念背道而驰,因此强烈建议不要使用Docker来处理映像更新。您可以使用操作系统的包管理更新系统。对于Alpine使用apk:sudoapkupgradeUbuntu使用apt:sudoapt-getupdate&&sudoapt-getdist-upgrade–y自定义编译后的镜像,将需要的APP嵌入到基础镜像中,比如添加Firefox容器时示例Dockerfile:FROMlsiobase/rdesktop-web:alpineRUN\echo"****installpackages****"&&\apkadd--no-cache\firefox-esr&&\echo"****cleanup****"&&\rm-rf\/tmp/*#addlocalfilesCOPY/root/#portsandvolumesEXPOSE3000VOLUME/config除了安装应用程序外,还需要在启动文件/root/defaults/autostart中添加firefox启动点。就是这样,当容器启动时,Firefox将在基本的Openboxgui中启动:LibreOffice应用程序还有一个Dockerfile,如下所示:-日期:-${BUILD_DATE}"LABELmaintainer="thelamer"RUN\echo"****installpackages****"&&\apkadd--no-cache--virtual=build-dependencies\curl&&\if[-z${LIBREOFFICE_VERSION+x}];then\LIBREOFFICE_VERSION=$(curl-sL"dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz"|tar-xz-C/tmp\&&awk'/^P:libreoffice$/,/V:/'/tmp/APKINDEX|sed-n2p|sed's/^V://');\fi&&\apkadd--no-cache\libreoffice==${LIBREOFFICE_VERSION}\tint2&&\echo"****openboxtweaks****"&&\sed-i\'s/NLMC/NLIMC/g'\/etc/xdg/openbox/rc.xml&&\echo"****清理****"&&\apkdel--purge\build-dependencies&&\rm-rf\/tmp/*#addlocalfilesCOPY/root/#portsandvolumesEXPOSE3000VOLUME/config自启动默认只会在用户登录web界面时启动桌面应用,如果需要在容器启动时运行应用,需要设置环境变量:-eGUIAUTOSTART=true如果用户将默认容器中的密码更改为abc,还需要设置密码选项以确保应用程序自动启动:-ePASSWORD=yourpassword总结Webtops项目,让我们可以选择在容器中运行Linux桌面,可以用于演示,一个临时系统,当然更多的使用场景还是需要大家去尝试和探索,因为是基于容器部署的,非常方便,而且几乎没有成本去尝试