JelinaOS 提供開箱即用的容器編排能力:完整相容 docker-compose 2.x 語法,透過雲端釋出或本機管理介面統一編排,由裝置代理程式自動部署執行;並在此基礎上擴充了非容器應用程式(ProgramSet)的宣告式管理,讓傳統程式也能享受“設定即管理”的現代體驗。
編排的執行方式
Section titled “編排的執行方式”編排檔案是宣告式設定:在雲端釋出(Release)或本機管理介面中定義,由裝置代理程式同步後自動部署。裝置本機提供 Docker 命令用於單容器的日常操作;多服務編排由裝置代理程式統一執行,無需在裝置上安裝額外的編排工具。
Compose 相容性
Section titled “Compose 相容性”JelinaOS 的 Compose 支援基於 2.x 規範實現,確保主流編排檔案的平滑遷移:
- 支援服務定義、網路、卷、環境變數、相依關係等常用設定;
- 相容 2.x 版本引入的欄位與行為;
- 3.x 新增的欄位不在支援範圍內,遷移時請使用 2.x 語法。
version: "2.4"
services: app: image: myapp:1.0.0 restart: always environment: MODE: production ports: - "8080:80"
worker: image: myworker:1.0.0 restart: on-failure depends_on: - app非容器應用程式:ProgramSet 宣告式管理
Section titled “非容器應用程式:ProgramSet 宣告式管理”工業現場有大量以傳統方式執行的程式:指令碼、常駐程式、第三方二進位。JelinaOS 將它們納入統一的宣告式管理體系,設定欄位與系統服務語義一一對應,學習成本低、管理能力強。
programs: myapp: command: run.sh # 啟動命令 running: true # 是否執行 restart: always # 重新啟動策略 environment: # 環境變數 MODE: production working_directory: . # 工作目錄 user: root # 執行使用者 pid_file: /var/run/myapp.pid支援的設定欄位
Section titled “支援的設定欄位”| 欄位 | 對應語義 | 說明 |
|---|---|---|
command |
啟動命令 | 必填,程式入口 |
running |
是否執行 | 預設 true |
restart |
重新啟動策略 | no / on-success / on-failure / on-abnormal / on-watchdog / on-abort / always |
environment |
環境變數 | 鍵值對形式 |
kill_signal |
停止訊號 | 停止程式時傳送的訊號 |
working_directory |
工作目錄 | 程式執行目錄 |
type |
服務型別 | simple / forking / oneshot / dbus / notify / idle |
user / group |
執行身分 | 以指定使用者/使用者組執行 |
pid_file |
PID 檔案 | 記錄行程 PID |
wants / requires |
相依關係 | 低相依性 / 強依賴 |
before / after |
啟動順序 | 在指定服務之前/之後啟動 |
conflicts |
互斥關係 | 與指定服務互斥 |
start_limit_interval_sec / start_limit_burst |
重新啟動限制 | 限定時間窗內的最大重新啟動次數 |
start_limit_action |
超限動作 | none / reboot / poweroff 等 |
remain_after_exit |
退出後保持 | 防止重複啟動 |
exec_start_pre / exec_start_post |
前後置命令 | 啟動前/後執行的命令 |
服務單元增強
Section titled “服務單元增強”ProgramSet 還支援系統單元級的高階設定,例如開機依賴與條件檢查:
programs: myapp: command: run.sh restart: always Install: WantedBy: multi-user.target # 開機自動啟動 Unit: ConditionPathExists: /data/app/config.json # 條件檢查場景示例:混合編排
Section titled “場景示例:混合編排”version: "2.4"
services: # 容器化業務 web: image: myweb:1.0.0 restart: always
programs: # 傳統擷取程式 collector: command: collector --config /data/collector.conf restart: on-failure after: web容器應用程式與原生程式在同一套編排體系中協作工作,相依關係、啟動順序、重新啟動策略統一管理——這正是 JelinaOS 應用程式管理的獨特價值。