容器技术文档

简约无双

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 "$@"

docker

教程

技术爬爬虾
菜鸟编程
代码酷

安装

1
2
3
4
5
6
7
8
9
10
# 官方自动安装脚本
curl -fsSL https://get.docker.com | sudo sh
# 配置免 sudo 运行 Docker
# 创建 docker 组(安装后通常已自动创建)
sudo groupadd docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
# 注销当前用户重新登录
# 验证安装
docker run hello-world

使用

镜像管理
拉取镜像:docker pull 镜像名:标签(标签不写默认 latest)
查看本地镜像:docker images
删除本地镜像:docker rmi 镜像ID/镜像名
容器管理
后台运行容器:docker run -d –name 容器名 -p 主机端口:容器端口 镜像名
查看运行中容器:docker ps
查看所有容器(含已停止):docker ps -a
停止容器:docker stop 容器ID/容器名
启动已停止容器:docker start 容器ID/容器名
删除容器:docker rm 容器ID/容器名
进入运行中容器:docker exec -it 容器ID/容器名 /bin/bash
服务管理
查看服务状态:systemctl status docker
重启服务:sudo systemctl restart docker

  • 标题: 容器技术文档
  • 作者: 简约无双
  • 创建于 : 2026-05-12 00:00:00
  • 更新于 : 2026-09-12 23:34:42
  • 链接: https://blog.jianyuewushuang.top/2026/05/12/容器技术文档/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论