容器技术文档

简约无双

Distrobox

自动集成桌面、文件系统,资源占用低,可用来解决依赖冲突。

安装

1
2
3
sudo apt update
# 默认使用 Podman 作为无守护进程的容器后端
sudo apt install distrobox podman -y

基础使用

创建

1
distrobox create --name ubuntu24 --image ubuntu:24.04

进入

1
distrobox enter ubuntu24

退出

1
exit

停止

1
distrobox stop ubuntu24

删除容器

1
distrobox rm -f debian12

查看当前容器

1
distrobox list

高级使用

直接启动容器中的程序

1
distrobox enter ubuntu24 -- /opt/ubaa/bin/UBAA

导出应用到宿主机开始菜单

1
2
3
4
# 通过桌面启动文件导出
distrobox-export --app mailmaster --export-label "网易邮箱大师"
# 通过二进制文件导出
distrobox-export --bin /usr/local/bin/start-mailmaster --export-path ~/.local/bin

实例:网易邮箱大师

下载mail.deb安装包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
sudo apt update && sudo apt install distrobox podman -y
# 需要梯子
distrobox create --name ubuntu22 --image docker.io/library/ubuntu:22.04
distrobox enter ubuntu22
sudo apt update && sudo apt upgrade -y
sudo apt install ~/installers/mail.deb -y
sudo apt install -y libatk-bridge2.0-0 libgtk-3-0 libnss3 libxss1 libasound2 libxtst6 libgbm1 libxshmfence1 libdrm2 libx11-xcb1 libxcb-dri3-0 libxcb-xinerama0 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-shape0 libxcb-xfixes0 libxcb-xkb1 libfontconfig1 libfreetype6 libxcb-cursor0
# 确认包安装成功
dpkg -l | grep -i mailmaster
# 列出包内的程序文件,找到启动入口
dpkg -L mailmaster | grep -E '(/opt|launch\.sh|mailmaster$)'
# 可能结果:
# 主程序:/opt/mailmaster/mailmaster
# 启动脚本:/opt/mailmaster/launch.sh
# 在容器内创建启动脚本
sudo tee /usr/local/bin/start-mailmaster << 'EOF'
#!/bin/bash
# 显示协议环境变量
export QT_QPA_PLATFORM=xcb
# 输入法环境变量
export QT_IM_MODULE=fcitx5
export GTK_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
# 进程替换和变量追加
exec /opt/mailmaster/mailmaster "$@"
EOF
sudo chmod +x /usr/local/bin/start-mailmaster
# 确认官方桌面启动文件路径
dpkg -L mailmaster | grep '.desktop'
# 可能输出:/usr/share/applications/mailmaster.desktop
# 把桌面文件里的启动命令替换成我们写好的 start-mailmaster 脚本,这样点击图标时会自动带上 QT_QPA_PLATFORM=xcb 环境变量
sudo sed -i 's|^Exec=.*|Exec=/usr/local/bin/start-mailmaster %U|' /usr/share/applications/mailmaster.desktop
# 安装fcitx5前端库
sudo apt install -y fcitx5-frontend-qt5 fcitx5-frontend-gtk2 fcitx5-frontend-gtk3

# 在容器中启动
start-mailmaster
# 导出到宿主机开始菜单
distrobox-export --app mailmaster --export-label none
# 备选:二进制导出,在宿主机终端输入start-mailmaster启动软件
distrobox-export --bin /usr/local/bin/start-mailmaster --export-path ~/.local/bin
# 查看当前容器已导出的应用(在容器中执行)
distrobox-export --list-apps
# 删除已导出的应用(在容器中执行)
distrobox-export --app MailMaster --delete
# 退出容器
exit

输入法问题未解决

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
第二步:把 fcitx5 输入法插件放入程序自带的 Qt 目录
这是最关键的一步 —— 自带 Qt 的程序不会读取系统的 Qt 插件目录,必须手动把插件放进去才能加载输入法。

先找到程序自带的 Qt 插件根目录:

bash
运行

find /opt/mailmaster -name "platforms" -type d

正常会输出类似 /opt/mailmaster/plugins/platforms,它的上一级 /opt/mailmaster/plugins 就是 Qt 插件根目录。

创建输入法插件子目录(如果不存在):

bash
运行

sudo mkdir -p /opt/mailmaster/plugins/platforminputcontexts

把系统的 fcitx5 Qt5 输入法插件复制进去:

bash
运行

sudo cp /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so /opt/mailmaster/plugins/platforminputcontexts/
sudo chmod 644 /opt/mailmaster/plugins/platforminputcontexts/libfcitx5platforminputcontextplugin.so

(兜底增强)在启动脚本里追加插件路径变量,确保程序一定能读到:
重新编辑脚本,多加一行插件路径:

bash
运行

#!/bin/bash
export QT_QPA_PLATFORM=xcb
export QT_IM_MODULE=fcitx5
export GTK_IM_MODULE=fcitx5
export XMODIFIERS=@im=fcitx5
# 强制指定 Qt 插件路径
export QT_PLUGIN_PATH=/opt/mailmaster/plugins

exec /opt/mailmaster/mailmaster "$@"
  • 标题: 容器技术文档
  • 作者: 简约无双
  • 创建于 : 2026-07-01 18:50:31
  • 更新于 : 2026-07-01 18:50:31
  • 链接: https://blog.jianyuewushuang.top/容器技术文档/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。