系统维护
System(系统)区域涵盖让 Pier 主机不致被占满或落后于进度的日常维护:清理 Docker、监视磁盘用量、读取服务日志,以及更新 Pier 自身。
Docker 清理
Section titled “Docker 清理”Pier 可以清理四类 Docker 数据。手动的 Clean 操作会针对你选择的目标立即运行一次 prune -f:
| 目标 | 命令 |
|---|---|
| Images | docker image prune -f |
| Build cache | docker builder prune -f |
| Containers | docker container prune -f |
| Railpack/BuildKit cache | 在 buildkit 容器内运行 buildctl prune |
清理也会按计划运行。清理设置——是否启用、间隔,以及要清理哪些目标——会被镜像到统一调度器中的一个系统计划里。默认节奏是每天;1、6、12、24、48 或 168 小时的间隔映射到对应的 cron 表达式。默认情况下,计划运行会清理镜像和构建缓存,不动容器,并关闭 Railpack/BuildKit 缓存清理。
手动的 Railpack 清理很激进——它会彻底清空 BuildKit 缓存(
--keep-storage 0 --keep-duration 0)。计划运行则保守,保留大约 10 GB / 7 天的缓存,以免与 Auto-build 相冲突。
磁盘用量视图分解 Docker 的占用——分别列出镜像、容器和卷,外加构建缓存总量——按从大到小排序,并附总计。另有一份清理信息摘要报告有多少可回收,包括从 buildkit 容器内部测量的 Railpack/BuildKit 缓存。当 Auto-build 被禁用或 buildkit 容器未运行时,BuildKit 的数值会直接读为 0,而不是报错。
Pier 为一组严格白名单内的 systemd 单元(pier 和 pier-agent)暴露 journald 日志,以便你无需 SSH 即可调试运行时和启动问题。两种模式:
- 快照——一次性拉取,可按时间窗口(5 分钟至 7 天,或全部)、行数(30 / 100 / 500 / 1000 / 5000)和优先级(
err、warning、info、debug)过滤。 - 实时尾部——一个 WebSocket 流(
journalctl -f),在新行到达时即时推送。
只有白名单内的单元可被查询;其他任何内容都会在 API 处被拒绝。
设置中存储单个 IANA 时区(例如 Europe/Moscow),用于格式化对外通知中的时间戳。该名称在保存前会被校验,未知值会回退到 UTC。
Pier 检查 GitHub releases 是否有更新的构建,并将已发布的二进制文件与正在运行的进行比较。更新行为由一个模式设置控制:
| 模式 | 行为 |
|---|---|
notify | 告知你有可用更新(默认) |
auto | 自动应用更新 |
manual | 不检查也不提示 |
应用更新会下载二进制文件,将其暂存到数据目录,并请求具特权的本地 helper 将其换入并重启 Pier。在没有 helper 的安装上,Pier 会回退为直接替换并执行 systemctl restart;如果安装经过加固而不允许这样做,它会改为给出一条手动更新提示。