docker运行GUI程序

概述

最近发现系统的docker占用的系统资源实在有点大

docker system df

其中镜像占了19G,这主要还是以前为了省事直接把deepin系统做成了镜像造成了。现在打算用ubuntu系统作为载体,现在把其中遇到的问题罗列一下。

金山WPS Office

  1. 下载安装包.deb文件,并安装
dpkg -i wps.deb

期间会提示缺少多个软件包,按照提示执行命令补全缺少的依赖

apt --fix-broken install
  1. 安装wps缺少的字体
    wps也是为了规避版权问题没有在程序中内置这些字体,可以直接在搜索引擎中搜索下这个字体压缩包。wps_symbol_fonts.zip
unzip wps_symbol_fonts.zip
cd wps_symbol_fonts
# 复制字体到系统字体目录
cp * /usr/share/fonts/
  1. 安装中文字体
    这里就比较所以了,微软雅黑或者文泉艺字体都可以,同样复制ttf文件到/usr/share/fonts目录
  2. 更新系统locale编码
vim /etc/locale.gen
en_us.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

# 更新编码
locale-gen

如果以上命令找不到,可以安装apt-file查找命令所在的软件包

apt install apt-file
apt-file update
# 查看locale-gen在哪个软件包
apt-file search locale-gen
  1. 配置docker运行命令
xhost +
docker run -i --rm \
       -e DISPLAY=$DISPLAY \
       -e XMODIFIERS=@im=fcitx \
       -e QT_IM_MODULE=fcitx \
       -e GTK_IM_MODULE=fcitx \
       -e QT_X11_NO_MITSHM=1 \
       -e LC_ALL=zh_CN.utf-8 \
       -v /tmp/.X11-unix:/tmp/.X11-unix \
       wps wps

百度网盘

百度网盘的安装和wps类似,可以直接参考wps的流程。不过linux版的百度网盘实际上是electron的套壳web程序。
在最后执行的时候,如果有如下提示:

exception in initAndListen: 14043 clear tmp files caught exception exception: locale::facet::_S_create_c_locale name not valid, terminating

说明这个程序设置locale为C才可以。
同时提示程序如果在root下运行过,需要附加--no-sandbox参数。
运行脚本如下

xhost +
docker run -i --rm \
       -e DISPLAY=$DISPLAY \
       -e XMODIFIERS=@im=fcitx \
       -e QT_IM_MODULE=fcitx \
       -e GTK_IM_MODULE=fcitx \
       -e QT_X11_NO_MITSHM=1 \
       -e LC_ALL=C \
       -v /tmp/.X11-unix:/tmp/.X11-unix \
       baiducloud /opt/baidunetdisk/baidunetdisk --no-sandbox