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 应用管理的独特价值。