입력 ubuntu:latest ZimaOS의 “사용자 지정 앱 설치” 필드에 입력한다고 해서 항상 실행되는 소형 Ubuntu 서버가 자동으로 생성되는 것은 아닙니다. 해당 이미지는 최소 Ubuntu 컨테이너 파일 시스템이며, 완전한 부팅 시퀀스, SSH 데몬, 서비스 관리자 및 이미 실행 중인 백그라운드 애플리케이션이 구성된 가상 머신이 아닙니다.
이 차이가 2025년 10월의 원본 사례를 설명합니다. 이미지는 가져올 수 있었고 컨테이너도 생성할 수 있었지만, 사용자가 예상한 방식으로 계속 실행되지는 않았습니다. 적절한 해결책은 실제 목표에 따라 달라집니다. 컨테이너에서 하나의 애플리케이션을 실행할 것인지, 아니면 VM 내부에서 완전한 범용 Debian/Ubuntu 운영 체제를 실행할 것인지에 따라 다릅니다.
Docker 컨테이너는 소형 가상 머신이 아닙니다
가상 머신은 완전한 컴퓨터 환경을 에뮬레이션하고 자체 운영 체제 스택을 부팅합니다. 컨테이너는 호스트의 Linux 커널을 공유하며 자체 사용자 공간에서 하나 이상의 격리된 프로세스를 실행합니다.
Docker의 모델은 컨테이너의 주 프로세스를 중심으로 합니다. 포그라운드 프로세스가 종료되면 분리 모드 컨테이너도 종료됩니다. 따라서 컨테이너는 일반적으로 웹 서버, 데이터베이스, 동기화 데몬 또는 애플리케이션 워커와 같은 장기 실행 서비스 중심으로 구축됩니다.
Ubuntu 및 Debian 공식 이미지는 최소 기본 이미지입니다
현재 Ubuntu 공식 이미지는 Canonical의 최소 루트 파일 시스템을 기반으로 빌드되며, Docker는 이를 완전한 VM 어플라이언스가 아니라 최소 설치로 설명합니다. Debian 공식 이미지 역시 최소 minbase 루트 파일 시스템.
터미널로 하나를 대화형으로 시작하면 셸이 제공되므로 작은 Linux 환경처럼 느껴집니다. 해당 셸이 종료되면 컨테이너를 계속 실행 상태로 유지할 포그라운드 서비스가 남아 있지 않을 수 있습니다.
둘 중 어느 이미지든 미리 구축된 서버 어플라이언스로 간주하기 전에 관리되는 Ubuntu 기본 이미지 정보 또는 관리되는 Debian 기본 이미지 정보를 확인하세요.
ubuntu:latest가 즉시 중지될 수 있는 이유
ZimaOS는 설치된 Docker 앱에 의미 있는 장기 실행 프로세스가 있을 것으로 예상합니다. 기본 배포 이미지는 일반적으로 다른 이미지의 기반이거나 대화형 셸 환경입니다. PID 1로 유지되도록 구성된 서비스 프로세스가 없으면 컨테이너는 “충돌”하는 대신 정상적으로 종료될 수 있습니다.
ZimaOS가 이미지 설치에 실패했다고 가정하기 전에 컨테이너 로그와 종료 상태를 확인하세요. 애플리케이션이 구성되지 않은 상태로 종료된 컨테이너와 시작 후 오류를 발생시키는 서비스는 서로 다른 문제입니다.
애플리케이션 하나만 필요하다면 애플리케이션부터 시작하세요
원래 사용자는 완전한 VM을 원한 것이 아니라 iDrive라는 하나의 애플리케이션과 NAS 스토리지에 대한 접근을 원한다고 명확히 했습니다. 이 경우 가장 좋은 Docker 설계는 일반적으로 실제 애플리케이션용으로 유지 관리되는 이미지를 찾거나, 해당 애플리케이션을 설치하고 실행하는 작은 이미지를 만드는 것입니다.
컨테이너는 애플리케이션에 필요한 포트, 볼륨, 자격 증명 및 장치만 노출해야 합니다. 영구 파일은 일시적인 컨테이너 계층 내부에만 저장하지 말고 매핑된 ZimaOS 스토리지에 저장해야 합니다.
실제 컨테이너 서비스에는 Docker Compose 사용
커뮤니티 답변에서는 단순히 입력하는 대신 적절한 Compose 정의를 사용할 것을 제안했습니다. ubuntu:latest 그리고 컨테이너 이름입니다. 현재 ZimaOS는 이 방향으로 더욱 발전하여 Docker Compose를 가져오고, YAML을 편집하며, 수명 주기 제어 기능으로 여러 컨테이너 스택을 실행할 수 있습니다.
현재 IceWhale 지침에 따르면 표준 컨테이너 런타임 구성은 Docker Compose에 속하고, ZimaOS 전용 스토어 메타데이터는 다음 위치에 속합니다. x-casaos.
배포판 이미지 이름을 완전한 애플리케이션 정의로 취급하기보다 현재 ZimaOS Compose 모델을 셀프 호스팅 앱에 사용하세요.
NAS 스토리지를 컨테이너에 매핑
애플리케이션에 디렉터리 하나에 대한 접근만 필요하다면 해당 ZimaOS 폴더를 컨테이너에 매핑하세요. 호스트 측은 대상 스토리지 풀의 백업 또는 데이터 폴더를 가리키고, 컨테이너 측에서는 애플리케이션이 요구하는 간단한 경로를 노출해야 합니다.
현재 ZimaOS에서는 호스트 스토리지를 컨테이너 경로에 매핑하는 방법을 설명합니다. 이는 보통 폴더 하나에 접근하기 위해 전체 Debian VM을 실행하는 것보다 가볍습니다.
소프트웨어가 완전한 Linux 머신을 요구할 때 ZVM 사용
애플리케이션 설치 프로그램이 다음과 같은 항목을 요구하는 경우 VM이 더 적합합니다.
- 기존 패키지 관리자와 변경 가능한 시스템 파일 시스템
- systemd 또는 여러 OS 수준 서비스
- 컨테이너를 통해 안전하게 제공할 수 없는 커널 수준 동작
- 기존 SSH 관리 방식의 Linux 서버 환경
- Ubuntu/Debian 설치를 명시적으로 지원하지만 Docker는 지원하지 않는 공급업체의 소프트웨어
이는 첫 번째 커뮤니티 답변과 일치합니다. 독립적인 Debian 또는 Ubuntu 운영 체제가 목적이라면 기본 컨테이너 이미지를 완전한 VM처럼 동작시키려 하지 말고 ZVM을 사용하세요.
대신 ZimaOS 루트 파일 시스템에 앱을 설치하지 마세요
“Ubuntu 컨테이너가 종료됨”에서 “ZimaOS 자체에 apt로 소프트웨어를 설치하자”로 옮겨가는 것은 대개 잘못된 방향입니다. 현재 ZimaOS는 대부분의 시스템 폴더를 의도적으로 읽기 전용으로 유지하며, 일반적인 Debian/Ubuntu 호스트가 아닙니다. apt 일반적인 애플리케이션 관리 모델로서
애플리케이션 종속 요소를 ZimaOS 기본 시스템과 분리해 유지할 수 있도록 컨테이너와 VM이 존재합니다.
Debian/Ubuntu 기본 이미지가 여전히 유용한 경우
다음에서 빌드해야 할 정당한 이유가 있습니다: ubuntu 또는 debian: 대상 소프트웨어가 해당 배포판에 대한 설치 단계만 제공할 수 있거나, 이미지 빌드 중 해당 패키지 저장소가 필요할 수 있습니다.
이 경우 애플리케이션을 설치하고 실제 포그라운드 명령을 정의하는 Dockerfile 또는 Compose 기반 이미지를 만드세요. 수동으로 셸에 들어가 패키지를 대화형으로 설치한 뒤 수정된 컨테이너가 영구적인 앱이 되기를 기대하지 마세요. 이미지에 포함하거나 영구 볼륨에 저장하지 않은 변경 사항은 컨테이너를 다시 만들 때 사라질 수 있습니다.
재시작 정책으로는 누락된 주요 프로세스를 대체할 수 없습니다
Docker 재시작 정책은 재부팅이나 예기치 않은 종료 후 다시 실행되어야 하는 실제 서비스에 유용합니다. 그렇다고 이미 종료된 셸 세션이 애플리케이션 서버로 바뀌는 것은 아닙니다. 컨테이너가 의도한 작업을 이미 완료했다면 계속 재시작하는 것은 루프만 만듭니다.
소프트웨어에 맞는 가장 작은 격리 계층을 선택하세요
- 앱에 이미 유지 관리되는 Docker 이미지가 있음: 해당 이미지를 사용하세요.
- Ubuntu/Debian 종속 요소로 패키징 가능함: 적절한 애플리케이션 컨테이너를 빌드하세요.
- 앱에 완전한 기존 방식의 Linux 호스트가 필요함: ZVM을 사용하세요.
- 스토리지 액세스만 필요함: 전체 디스크를 가상화하는 대신 필요한 NAS 폴더를 매핑하세요.
ZimaOS의 Ubuntu 및 Debian FAQ
ubuntu:latest를 설치했는데 계속 실행되지 않는 이유는 무엇인가요?
기본 배포판 이미지는 자동으로 항상 실행되는 서비스가 아닙니다. Docker 컨테이너에는 계속 실행되는 주요 프로세스가 필요합니다.
ubuntu:latest는 완전한 Ubuntu 가상 머신인가요?
아니요. 호스트 커널을 공유하는 최소한의 컨테이너 사용자 공간입니다.
모든 Linux 애플리케이션에 ZVM을 사용해야 하나요?
아니요. 소프트웨어가 컨테이너를 지원한다면 실제 Docker 애플리케이션이 일반적으로 더 가볍고 관리하기 쉽습니다.
ZVM이 더 나은 선택인 경우는 언제인가요?
소프트웨어가 시스템 수준 서비스나 설치 가정을 포함한 전통적인 변경 가능한 Ubuntu/Debian 서버를 요구하여 컨테이너에 적합하지 않을 때 VM을 사용하세요.
