콘텐츠로 이동
공식 웹사이트로 돌아가기

docker-compose 호환성과 확장

JelinaOS는 docker-compose 2.x 문법과 완전히 호환되는 즉시 사용 가능한 오케스트레이션을 제공합니다. 클라우드 Release 또는 로컬 관리 인터페이스에서 통합 구성하면 장치 에이전트가 자동 배포·실행합니다. 여기에 비컨테이너 애플리케이션(ProgramSet)의 선언형 관리를 확장하여 기존 프로그램도 “구성만으로 관리”할 수 있도록 합니다.

오케스트레이션 파일은 선언형 구성입니다. 클라우드 Release 또는 로컬 관리 인터페이스에서 정의하면 에이전트가 동기화하여 자동 배포합니다. 장치의 Docker 명령은 개별 컨테이너의 일상 작업에 사용하며, 다중 서비스 오케스트레이션은 에이전트가 통합 수행하므로 별도 도구를 설치할 필요가 없습니다.

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 선언형 관리

섹션 제목: “비컨테이너 애플리케이션: ProgramSet 선언형 관리”

산업 현장에는 스크립트, 데몬과 타사 바이너리 등 기존 방식의 프로그램이 많습니다. JelinaOS는 이를 통합 선언형 관리에 포함하고 구성 필드를 시스템 서비스 의미와 일대일로 대응시켜 낮은 학습 비용과 강력한 관리 기능을 제공합니다.

programs:
myapp:
command: run.sh # 시작 명령
running: true # 실행 여부
restart: always # 재시작 정책
environment: # 환경 변수
MODE: production
working_directory: . # 작업 디렉터리
user: root # 실행 사용자
pid_file: /var/run/myapp.pid
필드 의미 설명
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 실행 전후 명령 시작 전/후 실행할 명령

ProgramSet은 부팅 의존성과 조건 검사 등 시스템 유닛 수준의 고급 구성도 지원합니다.

programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # 부팅 시 자동 시작
Unit:
ConditionPathExists: /data/app/config.json # 조건 확인

시나리오 예제: 혼합 오케스트레이션

섹션 제목: “시나리오 예제: 혼합 오케스트레이션”
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 애플리케이션 관리의 고유한 가치입니다.