背景

由于要和开源社合办一个活动,要求线上线下同时进行,需要使用对方的云平台,本来以为只需要提供iso镜像就行了,没想到对方只支持docker镜像。虽然之前用过docker,但是完全没想过docker里跑桌面。

 

思路调研和已有开源项目

说实话,由于没怎么接触过docker,所以花了一上午时间看了下docker实践教程,但是对如何运行桌面还是没什么头绪。但是我之前在win10刚出wsl的时候好奇去尝试过,当时有一种使用ximage映射使wsl运行图形界面的方案,我猜测docker也可以通过这种类似远程桌面的方式来跑桌面。

 

同时我又寻找了一些开源项目,这里不得不吐槽下,大家似乎对在docker里启桌面都没什么兴趣,相关资料是真的少…

 

首先是kde neno,kde neno有docker镜像的试用,看了下发现采用的是xserver-xwphyr这个方案,但是对于docker镜像的细节并看不到,遂放弃。

 

然后我想到了deepin,似乎曾经听说过他们有相应的docker镜像,我抱着试试看的心态去找了找,发现确实有一个在docker里运行桌面的方案,然而是使用xdocker,这个显然不符合我的预期,只能放弃。

 

最后终于在github上找到了这个docker-ubuntu-vnc-desktop 这个项目是在docker里运行lxde桌面的ubuntu,并通过浏览器来访问。效果如下

 

效果相当不错,赶紧看看人家的dockerfile是如何构建的

拉取镜像:

 

docker pull dorowu/ubuntu-desktop-lxde-vnc

 

 

 

运行容器:

 

docker run -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=VNC登录的密码 -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc

 

 

 

该镜像以VNC的方式连接到桌面环境服务器,可以下载个VncViewer 作为客户端连接到容器

 

注意,这里的容器暴露了两个端口

 

6080:是web版的vnc,可以在浏览器上直接访问桌面环境

5900:是使用客户端工具连接的端口

显示分辨率可以通过环境变量来控制 如下:

docker run -p 6080:80 -e RESOLUTION=1920x1080 -v /dev/shm:/dev/shm dorowu/ubuntu-desktop-lxde-vnc

 

 

附件
如何在docker中运行ubuntukylin桌面系统.docx
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐