콘텐츠로 이동

워크스페이스 템플릿 및 공유 마운트

워크스페이스 템플릿은 다음을 정의합니다.

  • 사용할 컨테이너 이미지.
  • 사용 가능한 런처(앱)와 시작 방법.
  • 기본 리소스 제안(CPU, 메모리).
  • 워크스페이스 템플릿별 환경 변수(선택).

전역 vs. 사용자 소유 워크스페이스 템플릿

섹션 제목: “전역 vs. 사용자 소유 워크스페이스 템플릿”
워크스페이스 템플릿소유자볼 수 있는 사람
전역root (관리자)모든 사용자
사용자 소유일반 사용자해당 사용자만

관리자는 Workspace templates 영역(/admin/templates)에서 전역 워크스페이스 템플릿(연구자에게는 워크스페이스 템플릿으로 보입니다)을 관리합니다. 일반 사용자가 Advanced tools 메뉴의 Workspace templates 페이지를 열면 My workspace templates가 먼저 나옵니다. Workspace templates, My images, My build history 탭도 함께 제공됩니다. 기존의 별도 사용자 Images 페이지와 탐색 항목은 제거되었습니다.

Workspace templates에는 관리자가 아직 활성화하거나 빌드하지 않은 항목까지 포함해 기본 제공 워크스페이스 템플릿이 모두 표시됩니다. 준비된 워크스페이스 템플릿으로 워크스페이스를 만들거나 Clone & customize를 선택해 비공개 사본을 만들 수 있습니다. Dockerfile 기반 워크스페이스 템플릿은 편집 가능한 빌드 컨텍스트를 사용자의 작업 디렉터리에 복사하고 레지스트리 이미지 기반 워크스페이스 템플릿은 기존 이미지 참조를 유지합니다.

My images는 이미지 이름, 크기, 생성 날짜와 활성 컨테이너의 Not checked 상태를 먼저 보여줍니다. Manage를 선택하면 활성 컨테이너, 삭제, 추적되지 않는 컨테이너 확인을 불러옵니다. 이 확인 없이도 Make workspace template을 사용할 수 있습니다. 또한 Podman 이미지 목록 확인이 오래 걸려도 사용자가 자신의 작업을 먼저 보도록 재사용 가능한 전역 프리셋보다 My workspace templates를 앞에 표시합니다.

전역 워크스페이스 템플릿 생성 또는 편집

섹션 제목: “전역 워크스페이스 템플릿 생성 또는 편집”

활성화 상태를 간결하게 보여주는 카탈로그와 New workspace template 작업이 있는 Workspace templates 페이지

  1. Workspace templates(/admin/templates) → New workspace template을 선택해 생성 양식을 엽니다.
  2. 이름, 컨테이너 이미지 참조(예: docker.io/pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime), 리소스 기본값을 입력합니다. 이미지 참조에는 docker.io, ghcr.io, quay.io, nvcr.io처럼 registry host를 명시해야 합니다. python:3.11처럼 registry가 빠진 이름은 호스트의 Podman search-registry 정책에 따라 출처가 달라질 수 있으므로 거부됩니다.
  3. 앱 런처를 추가합니다. 일반적인 앱은 재사용 가능한 카탈로그에서 런처 가져오기로 복사하는 편이 좋습니다. 특정 워크스페이스 템플릿에만 필요한 앱은 수동 런처 항목을 사용하세요. 앱을 시작하는 명령은 ${HOST_PORT}에 바인딩해야 합니다. 보통 ${AUTH_TOKEN} 또는 ${BASE_PATH}를 앱에 전달합니다.
  4. 저장합니다. 활성화한 워크스페이스 템플릿은 모든 사용자의 워크스페이스 생성 다이얼로그에 즉시 나타납니다.

기본 제공 워크스페이스 템플릿은 활성화하거나 비활성화하기만 하면 이후에 제공되는 업데이트를 계속 받습니다. 정의를 편집하면 관리자 버전으로 고정됩니다. Reset to shipped defaults는 활성화 상태나 승인한 약관을 바꾸지 않고 기본 정의를 복원합니다. 업그레이드해도 관리자가 의도적으로 비활성화한 기본 워크스페이스 템플릿은 다시 켜지지 않습니다.

게시된 이미지와 로컬 빌드 이미지

섹션 제목: “게시된 이미지와 로컬 빌드 이미지”

이제 워크스페이스 템플릿 옆에 Artifact source가 표시됩니다. Published image는 LabPod가 특정 버전으로 고정해 내려받는 검증된 이미지입니다. Locally built는 각 연구자가 자신의 계정에서 워크스페이스 템플릿의 Dockerfile을 빌드한 이미지입니다. 기본 제공 워크스페이스 템플릿 16개 중 14개(PyTorch, PyTorch Demo, TensorFlow, SciPy, Anaconda, Code Server, CUDA Composite, LLM/Hugging Face, ComfyUI, R ML, RStudio, Parallel Programming, Miniforge, uv)는 게시된 이미지로 제공됩니다. 이 워크스페이스 템플릿들은 활성화할 때 빌드 없이 다운로드만 하면 되므로 연구자가 직접 받을 수 있습니다. LabPod는 MATLAB과 MS Code Serve-Web 두 이미지를 재배포할 권한이 없습니다. 그래서 이 둘만 로컬 빌드로 남았습니다. 관리자는 레시피를 활성화하고 각 연구자는 워크스페이스를 설정할 때 빌드합니다.

게시형 워크스페이스 템플릿도 모두 Dockerfile을 함께 제공하므로 내용을 확인하고 복제하거나 내보낼 수 있습니다. 복제/가져오기 사본에서 그 Dockerfile을 직접 수정하거나 워크스페이스 템플릿이 가리키는 이미지 참조를 바꾸면, LabPod는 그 워크스페이스 템플릿을 UserModified로 표시하고 이후로는 CUDA 자동 선택을 비롯한 출고 기본값을 적용하지 않습니다. Reset to shipped defaults를 선택하면 이 표시가 지워지고 게시된 자동 선택 이미지로 돌아갑니다.

PyTorch, LLM/Hugging Face, ComfyUI, CUDA Composite, Parallel Programming은 호스트에서 감지한 NVIDIA 드라이버와 GPU 세대를 읽어 두 조건을 모두 만족하는 가장 높은 CUDA 버전을 선택합니다(예: 드라이버 525는 v2-cu121을 선택). 이 선택은 신규 설치가 이 워크스페이스 템플릿들을 처음 시드할 때 한 번 실행됩니다. 그 뒤에도 관리자가 해당 워크스페이스 템플릿의 이미지 참조를 직접 수정하지 않았다면 이미지를 준비할 때마다 다시 적용됩니다. 드라이버를 업그레이드하면 LabPod를 재시작하지 않아도 약 5분 안에 반영됩니다. TensorFlow는 자체 CUDA를 단일 태그에 포함하고 CPU 전용 워크스페이스 템플릿은 CUDA 버전 자체가 필요 없으므로 둘 다 자동 선택 대상이 아닙니다.

기존 워크스페이스 템플릿의 이미지를 직접 업데이트하려면(새 버전을 풀한 뒤나 특정 CUDA 버전을 고정할 때):

  1. 관리자 UI에서 워크스페이스 템플릿을 엽니다.
  2. 이미지 필드를 편집합니다.
  3. 저장합니다. 이 워크스페이스 템플릿으로 새로 만드는 워크스페이스는 새 이미지를 사용합니다. 기존에 실행 중인 워크스페이스는 영향을 받지 않습니다.

root 관리자는 Launchers(/admin/launchers, Workspace templates 아래)에서 재사용 가능한 런처 정의를 관리합니다. 생성 양식은 New launcher를 선택해야 열립니다.

각 카탈로그 런처는 앱 이름, 레이블, 컨테이너 포트, 프로토콜, 명령 템플릿, 준비 상태 경로, probe 명령, 설치 힌트, 선택적 시작 필드, LabPod가 proxy prefix를 제거할지 여부를 정의합니다. 카탈로그 런처를 워크스페이스 템플릿으로 가져오면 LabPod는 해당 정의를 워크스페이스 템플릿에 복사합니다. 이후 카탈로그를 수정해도 기존 워크스페이스 템플릿은 자동으로 바뀌지 않습니다.

JupyterLab, TensorBoard, MLflow, code-server, RStudio, MATLAB, ComfyUI 같은 공통 앱은 카탈로그를 사용하세요. 한 워크스페이스 템플릿에만 필요한 앱은 수동 워크스페이스 템플릿 포트를 사용하면 됩니다.

LabPod는 JupyterLab, code-server, TensorBoard, MLflow, Aim, 웹 터미널을 하나의 컨테이너에 담은 복합 워크스페이스 템플릿을 함께 제공합니다.

워크스페이스 템플릿 CUDA Composite Workspace는 기본으로 활성화되어 있으며 게시된 ghcr.io/labpod/cuda-composite 이미지(호스트에 맞춰 CUDA 버전 자동 선택, 기본값 v2-cu126)를 pull합니다. 빌드는 필요 없습니다. 다른 CUDA 버전을 고정하거나 자체 복합 이미지를 쓰고 싶을 때만 이미지 참조를 편집하세요. 편집하면 그 워크스페이스 템플릿은 CUDA 자동 선택 대상에서 빠집니다.

워크스페이스 템플릿 PyTorch Demo도 게시된 이미지를 쓰는 비슷한 쇼케이스입니다. 공개 ghcr.io/labpod/pytorch-demo 이미지(v2-cpu, CPU 전용이라 CUDA 자동 선택 대상이 아님)를 pull하므로 아무것도 빌드하지 않고 활성화할 수 있습니다. 준비가 필요해서가 아니라 선택해서 쓰는 항목이라 비활성 상태로 출고됩니다. 데모 노트북은 처음 시작할 때 시드됩니다.

사용자는 자신의 워크스페이스 템플릿을 번들(매니페스트 + 이미지 다이제스트 참조가 있는 TAR)로 내보내 다른 배포본과 공유할 수 있습니다. 관리자도 같은 방식으로 전역 워크스페이스 템플릿을 내보낼 수 있습니다.

워크스페이스 템플릿 상세 페이지 → 내보내기. UI에서 가져오기: Workspace templates(관리자) 또는 Advanced tools → Workspace templates(일반 사용자) → 가져오기 → 번들 업로드 또는 번들 URL 입력 → 미리보기 → 확정.

관리자는 CLI로 호스트에 있는 번들을 가져올 수도 있습니다:

Terminal window
sudo labpod admin template import ./template.tar --global
sudo labpod admin template import ./template.tar --owner alice
Terminal window
# Run these as root
labpod admin template import ./template.tar --global
labpod admin template import ./template.tar --owner alice

CLI로 가져온 워크스페이스 템플릿은 검토할 수 있도록 비활성화 상태로 생성됩니다. root가 가져오면 이미지를 빌드하지 않고 Dockerfile과 컨텍스트를 전역 레시피로 보존합니다. 활성화된 레시피는 연구자가 자신의 계정에서 빌드합니다.

공유 마운트는 LabPod가 모든 워크스페이스에 바인드 마운트하는 호스트 디렉토리입니다. 일반적으로 대용량 읽기 전용 데이터셋이나 공유 쓰기 가능 디렉토리에 사용합니다.

Shared mounts(/admin/shared-mounts, System 아래) → New shared mount:

  • 이름: UI에 표시되는 레이블(예: datasets).
  • 호스트 경로: 마운트할 호스트 디렉토리(예: /data/datasets).
  • 컨테이너 경로: 워크스페이스 내부에서 표시될 위치(예: /data).
  • 읽기 전용: 기본으로 체크되어 있습니다. 쓰기 가능한 공유로 만들려면 체크를 해제하세요.

마운트는 새 워크스페이스에 적용됩니다. 기존에 실행 중인 워크스페이스는 중지하고 재시작할 때까지 영향을 받지 않습니다.

기본적으로 관리자는 모든 호스트 경로를 구성할 수 있습니다. 허용할 루트를 제한하려면:

Terminal window
# /etc/labpod/labpod.env에서:
LABPOD_SHARED_MOUNT_ROOTS=/data,/datasets

이 설정으로 민감한 시스템 디렉토리를 실수로 마운트하는 일을 막습니다.

설치 스크립트가 root 소유 디렉토리로 /shared를 생성합니다. LabPod는 사용자마다 /shared/<username>을 자동으로 생성합니다(다른 사용자가 읽을 수 있음). 덕분에 사용자끼리 데이터를 가볍게 공유할 수 있습니다. 예를 들어 사용자 Alice는 자신의 워크스페이스 안에서 /shared/bob/을 읽을 수 있습니다.

root가 아닌 각 Linux 계정은 자신의 루트리스 Podman 저장소에서 워크스페이스 이미지를 pull하거나 빌드합니다. 게시된 전역 워크스페이스 템플릿은 해당 연구자가 워크스페이스를 설정할 때 레지스트리에서 이미지를 다운로드합니다. MATLAB과 MS Code Serve-Web 같은 로컬 레시피는 관리자가 활성화하고 연구자 계정에서 빌드합니다. 사용자는 Advanced tools → Workspace templates → My images에서 자신의 이미지를 관리합니다.

root 관리자는 전역 워크스페이스 템플릿 정의를 관리하지만 LabPod 워크스페이스 이미지 저장소는 두지 않습니다. root는 워크스페이스 이미지를 나열하거나 pull, 빌드, 삭제, prune할 수 없으며 다른 사용자의 이미지도 제거할 수 없습니다. root와 다른 superuser는 Monitoring (/admin/resources)에서 사용자별 이미지 사용량과 작업 이력을 볼 수 있습니다.

LabPod는 root 또는 공유 이미지 캐시, 공유 이미지 scope, 중복 이미지 회수 절차, 사용자에서 root로 이미지를 승격하는 요청을 의도적으로 지원하지 않습니다. root 캐시를 각 루트리스 저장소로 복사해도 사용자마다 완전히 풀린 사본 하나가 그대로 필요합니다. 승인, 복사, 복구 제어만 늘어날 뿐입니다. 단순함을 위해 이러한 기능은 지원하지 않습니다. 이미지를 배포할 때는 외부 레지스트리나 네트워크 레지스트리 캐시를 사용합니다. 중복 저장을 실제로 줄일 수 있는 대용량 공통 데이터셋과 모델 가중치에는 공유 마운트를 사용합니다.

LabPod에는 레지스트리 allowlist나 약관 동의 게이트가 없습니다. 구조적으로 유효하고 레지스트리가 명시된 이미지 참조라면 워크스페이스 템플릿에서 그대로 사용할 수 있습니다. root의 권한은 Workspace templates에서 전역 워크스페이스 템플릿을 활성화, 비활성화, 편집하는 범위로 한정됩니다.