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

컨테이너 애플리케이션

JelinaOS에는 완전한 컨테이너 런타임(Docker)이 내장되어 있지만, 컨테이너 배포는 장치에서 수동으로 실행하는 대신 Release 체계로 관리한다는 공통 원칙을 따릅니다. 운영 환경에서는 모든 컨테이너 애플리케이션을 Release 절차로 관리하여 정의, 배포, 실행 감독, 업데이트와 롤백의 전체 과정을 제어하는 것이 좋습니다.

이미지 빌드 및 푸시 → Release에 컨테이너 애플리케이션 선언 → 장치에 배포 → 장치 에이전트가 가져와 실행

애플리케이션을 컨테이너 이미지로 빌드하고 이미지 저장소(기업 비공개 또는 공개 저장소)에 푸시합니다.

Terminal window
docker build -t registry.example.com/myapp:1.0.0 .
docker push registry.example.com/myapp:1.0.0

JelinaCloud에서 Release를 생성하고 컨테이너 애플리케이션을 추가합니다.

  • 이미지 주소와 버전 태그를 지정합니다. 예기치 않은 업그레이드를 막으려면 명시적인 버전을 사용하는 것이 좋습니다.
  • 환경 변수, 포트 매핑과 데이터 볼륨을 구성합니다.
  • 재시작 정책(always 권장)과 리소스 제한을 설정합니다.

Release를 대상 플릿 또는 장치에 배포하면 장치 에이전트가 다음을 자동 수행합니다.

  • 이미지를 가져와 컨테이너를 생성합니다.
  • 구성에 따라 환경 변수를 주입하고 포트를 매핑하며 데이터 볼륨을 마운트합니다.
  • 컨테이너를 시작하고 지속적으로 실행을 감독합니다. 비정상 종료 시 자동 재시작하고 장치 재시작 후 자동 복구합니다.

컨테이너를 재생성하면 컨테이너 파일 시스템이 사라지므로 영구 보존할 데이터는 데이터 파티션에 마운트하세요.

  • Release에서 애플리케이션 데이터 볼륨을 선언하거나 장치의 데이터 파티션 디렉터리를 마운트합니다.
  • 데이터는 컨테이너 수명 주기와 독립적이므로 업그레이드와 재생성의 영향을 받지 않습니다.

장치의 Docker 명령은 조회와 진단에 사용하며 배포 관리에는 사용하지 않습니다.

Terminal window
docker ps # 컨테이너 실행 상태 확인
docker logs <컨테이너_이름> # 컨테이너 로그 확인
docker events # 컨테이너 이벤트 추적(진단용)
  • 버전 고정: Release에 명시적인 이미지 버전 태그를 사용합니다.
  • 상태 검사: 서비스 상태 검사를 구성하고 재시작 정책과 결합하여 자동 복구합니다.
  • 리소스 제한: 컨테이너의 메모리·CPU 상한을 설정하여 장치 전체에 영향을 주지 않도록 합니다.
  • 비공개 저장소: 기업 환경에서는 비공개 이미지 저장소를 사용하며 장치 에이전트가 이미지 배포를 통합 수행합니다.
  • 업그레이드와 롤백: 새 버전을 게시하여 업그레이드하고 이전 버전을 다시 지정하여 롤백합니다. 모두 클라우드에서 조율합니다.

장치에서 docker run으로 직접 애플리케이션을 배포할 수 있나요? 기술적으로 가능하지만 권장하지 않습니다. 직접 실행한 애플리케이션은 Release 체계 밖에 있어 통합된 실행 감독, 업데이트와 롤백 기능을 사용할 수 없습니다. 운영 환경에서는 Release로 배포하세요.

컨테이너가 비정상 종료되면 어떻게 되나요? Release에 restart: always를 설정한 애플리케이션은 비정상 종료 후 장치 에이전트가 자동 재시작합니다.