直接上dockerfile吧
#FROM ubuntu:22.04 as builder
FROM debian:bullseye as builder
ENV DEBIAN_FRONTEND=noninteractive
# 更新软件包列表,安装xfce4桌面环境及其他依赖
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y \
dbus-x11 \
xfce4 \
xfce4-goodies \
pm-utils \
net-tools \
vim \
supervisor && \
update-alternatives --set x-terminal-emulator /usr/bin/xfce4-terminal.wrapper && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 安装中文字体和中文语言包
RUN apt-get update && apt-get install -y \
fonts-droid-fallback \
ttf-wqy-zenhei \
ttf-wqy-microhei \
xfonts-wqy \
locales \
task-chinese-s-desktop && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
echo "zh_CN.UTF-8 UTF-8" > /etc/locale.gen && \
locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh
ENV LC_ALL zh_CN.UTF-8
# 配置supervisord守护进程
RUN { \
echo '[supervisord]'; \
echo 'nodaemon=true'; \
echo 'user=root'; \
echo '[include]'; \
echo 'files = /etc/supervisor/conf.d/*.conf'; \
} > /etc/supervisor/supervisord.conf
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"]
这只是个初步的桌面环境脚本,当然虚拟桌面一般都搭配vnc 或者rdp来使用,这两个安装都不复杂,建议使用xrdp+xorgrdp 来做。我在尝试了 vnc 和xrdp之后,均放弃了… 体验不是很理想测试的数据如下
不过这是后话,远程协议调研的部分,在后边的文章再细说吧。
启动xserver xfce 桌面环境
参考下面脚本:
#!/bin/bash
service dbus start
#启动XServer
startx -- :3 &
sleep 3
#启动xfce4 桌面
export DISPLAY=:3
startxfce4 &
sleep 3
#设置分辨率
xrandr --output Virtual1 --mode 1920x1080
成功之后
xserver 启动成功了,你也可以使用下面的命令来启动xserver:
/usr/lib/xorg/Xorg :3 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
遇到的一些问题
错误发生在 xf86EnableIO 处。错误信息中还包含了一个 “Segmentation fault at address 0x8”,表明在地址 0x8 处发生了段错误
是一些权限问题,提权就可以了 docker run 加上 --privileged
成功运行后: