Arch Linux 软件篇:Docker、Portainer 与我的软件管理方式
系统装完、桌面也配得差不多了,剩下就是软件。
之前配置篇里说应用单独开一篇,这篇就是。我现在的原则很简单:系统层用 pacman,应用层尽量别往系统里塞。能 Flatpak、玲珑、APM、AppImage 解决的就走这些,AUR 和 pacman 只装必要的。用下来最大的感受就是系统稳定很多,滚动更新很少再被某个第三方包卡住。
先看现在大概装了多少东西:
| 来源 | 数量 | 我拿来装什么 |
|---|---|---|
| pacman | 864 个包,109 个显式安装 | 内核、驱动、桌面、开发工具这些系统层的东西 |
| AUR | 14 个 | Chrome、JetBrains Toolbox、VMware、壁纸引擎、星火商店这些不好替代的 |
| Flatpak | 28 个引用 / 9 个应用 | Firefox、VS Code、OBS、FinalShell 这些 GUI 应用 |
| 玲珑 | 3 个应用 + 运行时 | WPS、Edge、微信开发者工具 |
| APM | 5 个应用 + 基础环境 | 钉钉、网易云、百度网盘、Apifox、Trae CN |
| AppImage | 5 个 | 微信、QQ、Motrix、Oryxis、玲珑商店 |
| Docker | 33 个镜像 / 1 个运行中容器 | 开发用的数据库、消息队列、Nginx 这些 |
AUR 那 14 个里还有 debug 包和依赖,真正主动装的没那么多。
软件都从哪来
pacman 和 AUR:只装系统件和没替代的
pacman 在 Arch 里是绕不开的,内核、驱动、PipeWire、fcitx5、Hyprland、Docker、Flatpak 这些都得靠它。我尽量只用 pacman 装系统层的东西,不把各种 GUI 应用往里塞。
AUR 也一样,能不用就不用。现在 AUR 里主要是这些:
google-chromejetbrains-toolboxvmware-workstation+vmware-host-modules-dkms-gitlinux-wallpaperengine-githyprmoncfgspark-store+amber-package-managernautilus-admin-gtk4、folder-color-nautilus这类 Nautilus 小扩展
这些东西要么官方仓库没有,要么 Flatpak / 玲珑里没有合适的替代,只能上 AUR。像浏览器、编辑器、聊天软件,能走 Flatpak 或玲珑的我都尽量走那边。
原因也很简单:AUR 包是社区维护的,版本新,但质量参差不齐;pacman 里第三方包一多,滚动更新的时候依赖冲突的概率就上去了。我现在基本是“系统件 pacman,应用走独立渠道”,更新的时候心里踏实很多。
Flatpak
Flatpak 现在装了 9 个应用:
- Firefox
- Visual Studio Code
- OBS Studio
- FinalShell
- LocalSend
- Flatseal
- Warehouse
- Gear Lever
- Ark
Flatpak 的好处是运行时独立,不往系统里塞依赖,升级也走自己的通道。代价是体积大、第一次启动慢一点,有些应用还要用 Flatseal 调权限。
我一般这么配:
Flatseal:改 Flatpak 应用的文件系统、网络、设备权限;Warehouse:看已安装的 Flatpak、清缓存、降级;Gear Lever:主要拿来管 AppImage,后面说。
主题方面不用担心,Noctalia 会把 GTK3 / GTK4 的配色一起生成,Flatpak 应用也能跟着变。
玲珑
玲珑(linyaps)主要拿来装国内应用:
- WPS Office
- Microsoft Edge
- 微信开发者工具
再加 deepin 的基础运行时。用 ll-cli list 就能看到装了什么。
玲珑之前有个问题:反复装删之后 ll-cli 状态容易不对。我把这个情况反馈给玲珑官方开发者之后,他们在最新的玲珑商店前端里加了自动检测和修复。现在遇到状态不对,先更新商店前端,再按官方文档清缓存,基本不用像以前那样反复重装。
星火商店和 APM
星火应用商店我主要拿来装 Deepin / Debian 生态的 .deb 应用,底层是 APM(Amber Package Manager)。
现在 APM 里装的应用:
- 钉钉
- 网易云音乐(otohime)
- 百度网盘
- Apifox
- Trae CN
另外还有 amber-pm-bookworm、amber-pm-trixie 这些基础环境。apm list --installed 能看完整的列表。
这套适合“只有 .deb、没有 Arch 包”的国内软件。它跟 pacman 是两套体系,更新的时候用 apm update,我一般交给 sysup 一起跑。
AppImage
AppImage 我放在 ~/AppImages,现在有:
- 微信
- Motrix
- Oryxis
- 玲珑应用商店社区版
微信和 QQ 没有特别省心的 Arch 包,Flatpak 里也没有官方版本,AppImage 算是最不折腾的方式:给执行权限,直接跑。想塞进启动器就用 Gear Lever 处理一下。
缺点也明显:更新得自己手动换文件,不像 Flatpak / 玲珑那样有统一的升级入口。所以我一般只在“没有更好选择”的时候用 AppImage。
统一入口和常用脚本
软件来源一多,记命令就烦。我平时用 app 这个小工具统一管这些来源:
| 来源 | 说明 |
|---|---|
pacman |
Arch 官方仓库 |
yay |
AUR |
flatpak |
Flatpak |
ll |
如意玲珑 |
apm |
星火应用 |
appimage |
AppImage |
app search、app install、app list、app update 都是同一套用法,底层还是调各自的命令,只是不用来回记。
app update 默认排除了 pacman 和 yay,系统更新还是走 sysup,避免两个入口同时动系统包。
sysup 是 UP主 SHORiN 的脚本,我拿来放在 ~/.local/bin,流程大概是:
- Btrfs 上先打快照;
- 检查 mirrorlist,必要时重新跑 reflector;
- 同步数据库、更新 keyring;
paru/yay -Su升级系统;- 更新 Flatpak、玲珑、APM;
- 重新生成 GRUB 配置。
这样系统包和第三方应用的更新是分开的,出问题也容易定位。
~/.my_shell_expansion 里还有几个常用的:
| 命令 | 作用 |
|---|---|
myenv |
Java / Node.js / Python 多版本管理,java use 21 这种 |
sysbak |
基于 snapper 的系统快照备份管理 |
deb |
.deb 转成 APM 包再安装 |
pyvenv |
Python 虚拟环境管理,use / activate 会自动 eval 到当前 shell |
Docker + Portainer CE
开发用的数据库、消息队列、Nginx 这些,我不喜欢直接装宿主机上。现在统一用 Docker,管理界面用 Portainer CE。
当前环境:
| 项目 | 版本 / 说明 |
|---|---|
| Docker | 29.9.2 |
| docker compose | 5.6.1 |
| Portainer CE | 2.39.3 |
| Portainer 管理页 | https://127.0.0.1:9443 |
| 当前运行容器 | 只有 portainer 一个 |
Portainer 自己也是用 compose 起的,文件在 ~/Docker/compose/docker-compose.yml。它挂了:
1 | volumes: |
/var/run/docker.sock 是让 Portainer 能管理 Docker;~/Docker/data/portainer 放 Portainer 自己的数据;~/Docker/compose 放它管理的 stack 文件。
平时开发要用数据库或者中间件的时候,我就在 Portainer 里起一个 stack,跑完就停。直接用 pacman 装 Postgres / Nginx 也不是不行,但版本切换和清理都麻烦,容器用完就停更适合我。现在镜像里留着 Postgres、Redis、RabbitMQ、Nginx、Consul、Hadoop 这些,容器平时不是全开着的,所以 docker ps 里通常只有 Portainer。
数据目录我统一放在 ~/Docker/data 下面,按服务分目录,比如 postgres、consul、hadoop 这些。备份的时候把 ~/Docker/data 和 ~/Docker/compose 打包就行,容器删了数据还在。
这套的好处:
- 数据库、消息队列不污染宿主机,版本随便换;
- 不想要了直接删容器,不用
pacman -Rns清依赖; - 端口、网络、数据卷都能在 Portainer 里看清楚;
- 开发环境和系统环境分开,滚动更新时少一层干扰。
注意一点:Portainer 挂了 docker.sock,权限很大,9443 别直接暴露到公网。我一般只在本机或者内网用,需要远程就套一层 VPN / 隧道。
为什么说这样更稳
我不是说 Arch 本身不稳定,而是“什么都往 pacman / AUR 里装”容易不稳。
现在这套的分工是:
- 系统层:pacman,只装内核、驱动、桌面、基础工具;
- GUI 应用:Flatpak / 玲珑 / APM / AppImage,各自带运行时;
- 开发依赖:Docker,按需起;
- 更新:
sysup先快照,再更新系统,最后更新第三方应用。
应用不跟系统抢依赖,滚动更新的时候冲突就少。再加上更新前有 Btrfs 快照,真出问题也能回滚。这也是我现在觉得 Arch 在合理的软件控制下很稳定的原因。
踩过的坑
| 坑 | 现象 | 处理 |
|---|---|---|
| 玲珑状态异常 | 反复装删后 ll-cli 状态不对 |
官方最新商店前端已加自动检测修复;先更新前端,再按文档清缓存 |
| AppImage 更新 | 不会自动升级 | 手动换文件,或者用 Gear Lever 管 |
| Portainer 数据 | 容器删了怕数据没 | 数据目录 bind mount 到 ~/Docker/data,备份这个目录 |
| Portainer 权限 | 挂了 docker.sock,等于 Docker root |
别把 9443 暴露公网,远程走 VPN / 隧道 |
| Flatpak 权限 | 应用读不到文件 | 用 Flatseal 放权限,别直接 --filesystem=host 全开 |
| APM / 星火 | 不是 Arch 原生包 | 只拿来补国内 .deb 应用,系统包还是 pacman |
参考
- Docker 文档
- Portainer 文档
- Flatpak 文档
- 如意玲珑文档
- 星火应用商店
- APM / Amber Package Manager
- AppImage 文档
- Gear Lever
- SHORiN_KiWATA / ShorinArchExperience-ArchlinuxGuide
上一篇:Arch Linux 桌面配置:Hyprland、Noctalia 与我的日常环境。安装篇:Arch Linux 安装实录:Windows 双系统、Btrfs 与 GRUB。



