whatshot在Docker中运行图形界面应用程序(GUI,支持输入法,有声音)

@Ta 2020-10-03发布,2022-02-21修改 11147点击
# 禁用XServer认证,允许docker内的程序绘制窗口
# 注意,要用当前登陆用户执行,用root用户执行没有用
xhost +

# 启动特权docker容器,使用Ubuntu 18.04,共享设备和临时文件夹
sudo docker run -it \
    --name ubuntu \
    --privileged \
    --network=host \
    -v /dev:/dev \
    -v /dev/snd:/dev/snd \
    -v /run:/run \
    -v /tmp:/tmp \
    -v /home:/home \
    \
    -e DISPLAY="$DISPLAY" \
    \
    -e CLUTTER_IM_MODULE=xim \
    -e GTK_IM_MODULE=xim \
    -e QT4_IM_MODULE=xim \
    -e QT_IM_MODULE=xim \
    -e XMODIFIERS=@im=fcitx \
    \
    -e LANG=zh_CN.UTF-8 \
    -e LANGUAGE=zh_CN \
    -e LC_CTYPE=zh_CN.UTF-8 \
    -e LC_ALL=zh_CN.UTF-8 \
    \
    ubuntu:18.04 bash

# 会提示“bash: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8)”,正常。

# 如果`-e DISPLAY="$DISPLAY"`打不开图形界面,可以试试`-e DISPLAY="localhost$DISPLAY"`

# 换源(可选)
sed -i 's/[a-z0-9.-]*\.[cno][oer][mtg]/mirrors.aliyun.com/g' /etc/apt/sources.list
# 或者用华为源
# sed -i 's/[a-z0-9.-]*\.[cno][oer][mtg]/mirrors.huaweicloud.com/g' /etc/apt/sources.list

# 更新软件包列表
apt update

# 安装中文语言包和字体(这样才能用中文输入法)
apt install language-pack-zh-hans 'fonts-noto*'
# 如果报错说找不到'fonts-noto*',换成下面这个命令:
#apt install language-pack-zh-hans fonts-noto fonts-noto-cjk fonts-noto-cjk-extra

# 安装并启动gedit来测试图形功能
apt install gedit
gedit

图片.png

# 退出容器
exit

# 重新进入
xhost +
sudo docker start ubuntu
sudo docker exec -it ubuntu bash
gedit

# 退出容器
exit

# 停止容器
sudo docker stop ubuntu

# 删除容器
sudo docker rm ubuntu

备注

  1. 如果刚开始能打开图形界面,后来就打不开,请运行:
    xhost +
    注意,应该用普通用户在docker外运行,不应该用root运行,也不是在docker内运行。
  2. 请不要用这种方法测试有安全风险的程序,因为共享了/dev,而且容器具有特权,容器内的程序可以做任何事,包括窃取文件、彻底破坏文件系统等。
  3. 由于添加了-v /home:/home,docker内的/home文件夹就是系统/home文件夹,请不要随意删除,否则可能会发生意外。

已知问题

  • 没声音。已解决,添加-v /dev/snd:/dev/snd就有声音了。

相关帖子:在root权限窗口中使用fcitx输入法

回复列表(2|隐藏机器人聊天)
添加新回复
回复需要登录