社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

再见 VMware 虚拟机!Docker 直接运行桌面

GitCube • 3 天前 • 25 次点击  

平时用 Docker 跑个数据库、Web 服务什么的挺顺手,但要在容器里开个带界面的程序?听起来就不太现实。

前几天在 GitHub 上看到一个叫 x11docker 的项目,好奇心驱使下载下来试了试,没想到真的挺牛的。

它不光能跑单个图形程序,连整套桌面环境都能塞进容器里,关键是安全性比直接装在系统上还要好。

screenshot

图形程序住进了 “隔离间”

我先拿个简单的文本编辑器试手,按照 README 的说明只需敲了一行命令:

x11docker --wayland --gpu x11docker/xwayland
screenshot

没几秒钟,熟悉的编辑器窗口就弹了出来,试了下点击、输入、菜单操作都正常。

更神奇的地方,这个程序其实完全跑在一个独立的容器里:就算它出了什么幺蛾子,也伤不到我的主系统。

screenshot

x11docker 的思路其实挺巧妙,它专门启动一个 X 服务器给容器用,而不是让容器直接访问主机的显示系统。

这样既解决了 Docker 本身不支持图形界面的问题,又避免了传统方案可能带来的安全隐患。就好像给每个应用都配了个 “专属显示器”。

完整桌面也能 “装进盒子里”

更好玩的是它的 --desktop 功能,能够启动一个完整的 Xfce 桌面,输入如下命令:

x11docker --desktop x11docker/xfce

等了几秒,一个独立的桌面窗口就打开了,里面该有的都有 —— 文件管理器、终端、系统设置,操作起来和真正的桌面环境没啥区别,但启动速度比虚拟机快多了。

screenshot

这功能对我们来说特别实用。比如想体验一下不同的桌面环境,或者需要一个 “干净” 的工作环境做实验,都能快速搞定。

用完直接关掉,下次再开又是崭新的状态,不用担心各种配置冲突的问题。

screenshot

硬件和外设支持

x11docker 在硬件支持方面考虑得比较全面。--gpu 选项允许容器程序使用主机的显卡进行硬件加速,这对 OpenGL 应用和图形密集型程序很重要。

项目还提供了多种外设和功能的支持选项:

screenshot

音频输出--pulseaudio 和 --alsa 参数支持在容器中播放声音;

剪贴板共享--clipboard 实现主机和容器之间的复制粘贴功能;

文件系统访问--share 可以将主机目录挂载到容器中;

外设支持--webcam 支持摄像头,--printer 支持打印机访问。

安装步骤

安装过程不复杂,按照 README 文件的说明三步搞定:

1、直接下载安装脚本:

curl-fsSL https://raw.githubusercontent.com/mviereck/x11docker/master/x11docker | sudobash-s----update

2、拉取一个基础镜像(推荐):

docker pull x11docker/xserver

3、就可以开始使用了。

screenshot

写在最后

x11docker 提供了一种在容器中运行图形界面应用的实用解决方案。

通过独立的显示服务器设计,它既满足了容器化图形程序的需求,又保持了较好的安全隔离性。

对于需要测试不同软件环境,或者希望将图形应用与主系统隔离的朋友来说,这是一个值得尝试的工具。

总体而言,该项目在图形程序容器化领域提供了一个相对成熟的解决方案。

GitHub 项目地址:https://github.com/mviereck/x11docker

今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!

往期热文

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/187009
 
25 次点击