Jetson Orin nx 와 nano 의 ai 다운로드 및 저장 해보기

728x90

0) 무엇을 백업할까 (우리 세팅 기준)

  • 컨테이너 이미지
    • dustynv/comfyui:r36.4.0
    • dustynv/ollama:latest (또는 쓰는 태그)
    • ghcr.io/open-webui/open-webui:main
  • (옵션) Ollama 모델 파일들: ~/.ollama (오프라인 재설치 시 모델까지 즉시 사용하려면)
  • 지금까지 도커 설치하느라고 무지하게 고생했고, 자료 찾는 것이 매우 힘들었음. 
  • 알고보니, 이미 만들어준 도커 이미지를 다운로드 받기만 하면 되는 것이었음. 
  • 다만 rvc 는 도커이미지로 만들어진 것이 없어서 내가 직접 도커 이미지를 만들었고, 

1) 이미지 “다운로드만” 받아 tar로 저장 (온라인에서 1회)

Jetson(NX)에서 실행:

 

# 저장 디렉토리
mkdir -p ~/offline-images && cd ~/offline-images

# 1) 필요한 이미지들 pull
docker pull dustynv/comfyui:r36.4.0
docker pull dustynv/ollama:latest
docker pull ghcr.io/open-webui/open-webui:main

# (추천) 아키텍처/다이제스트 기록
docker images --digests | egrep 'dustynv/comfyui|dustynv/ollama|open-webui' > digests.txt

# 2) 하나의 번들로 묶어 저장(레이어 포함)
docker save \
  dustynv/comfyui:r36.4.0 \
  dustynv/ollama:latest \
  ghcr.io/open-webui/open-webui:main \
  -o jetson_bundle_$(date +%Y%m%d).tar

ls -lh jetson_bundle_*.tar digests.txt

 

하나씩 저장하고 싶다면 필요한 이미지들을 하나씩 나눠서 반복하면 될 것 같음. 

 


2) (옵션) Ollama 모델까지 오프라인용으로 준비

나중에 인터넷 없이 모델까지 바로 쓰려면, 모델 파일들을 export해서 보관해두자.

# 모델 목록 확인
ollama list

# 예: llama3:8b, qwen2.5:7b 등을 보관
mkdir -p ~/offline-images/ollama-models

ollama export llama3:8b > ~/offline-images/ollama-models/llama3-8b.gguf
ollama export qwen2.5:7b > ~/offline-images/ollama-models/qwen2.5-7b.gguf

# (대안) ~/.ollama 디렉토리 자체를 아카이브
tar -czf ~/offline-images/ollama_cache_$(date +%Y%m%d).tar.gz -C ~ .ollama

 

오프라인인서 복구 시

# gguf 파일로 모델 import
ollama create llama3:8b -f ~/offline-images/ollama-models/llama3-8b.gguf
# 또는 캐시 통째로 복원
tar -xzf ~/offline-images/ollama_cache_*.tar.gz -C ~

 


3) 오프라인 설치 시 복구 (Docker 단독 환경)

Docker 엔진을 쓰는 노드에서:

# tar 파일을 해당 노드로 복사한 뒤
cd ~/offline-images
sudo docker load -i jetson_bundle_YYYYMMDD.tar

# 이미지 확인
docker images | egrep 'dustynv/comfyui|dustynv/ollama|open-webui'

 

복구 후 실행방법

# ComfyUI
docker run -it --rm --runtime nvidia --network host \
  --shm-size=8g --privileged \
  -v /srv/share/comfyui/models:/opt/comfyui/models \
  dustynv/comfyui:r36.4.0

# Ollama
docker run -d --restart=always --runtime nvidia --network host \
  -e OLLAMA_KEEP_ALIVE=1h \
  -v $HOME/.ollama:/root/.ollama \
  --name ollama \
  dustynv/ollama:latest

# Open WebUI (Ollama 연동)
docker run -d --network=host \
  -v ${HOME}/open-webui:/app/backend/data \
  -e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
  --name open-webui --restart always \
  ghcr.io/open-webui/open-webui:main

 

4) 오프라인 설치 시 복구 (k3s / containerd 환경)

k3s는 기본이 containerd라서 docker load가 아니라 ctr import를 써야 해.

각 노드(마스터/워커)에서:

# tar 파일을 각 노드로 복사한 뒤
sudo ctr -n=k8s.io images import ~/offline-images/jetson_bundle_YYYYMMDD.tar

# 확인
sudo ctr -n=k8s.io images ls | egrep 'dustynv/comfyui|dustynv/ollama|open-webui'

ctr 경로가 다르면:
/var/lib/rancher/k3s/agent/containerd/bin/ctr -n=k8s.io images import ...

그 후 기존의 kubectl apply -f <deployment.yaml> 만으로 Pod가 레지스트리 접속 없이 뜬다.
(우리 YAML은 imagePullPolicy: IfNotPresent 설정을 써서, 로컬에 이미지 있으면 pull 안 함)

 


5) 버전 고정 팁 (중요)

  • 태그만 기록하면 레지스트리 쪽에서 내용이 바뀔 수 있으니, digests.txt다이제스트(sha256) 를 기록해두자.
  • 나중에 YAML에도 image: dustynv/ollama@sha256:<digest> 형식으로 박아두면 완전 동일한 이미지를 재현할 수 있어.

6) 자동화 스크립트 (저장/복구)

저장 스크립트 (온라인에서 한 번):

cat > ~/offline-images/save_all.sh <<'EOF'
#!/bin/bash
set -e
OUTDIR=${1:-$HOME/offline-images}
mkdir -p "$OUTDIR" && cd "$OUTDIR"

IMAGES=(
  "dustynv/comfyui:r36.4.0"
  "dustynv/ollama:latest"
  "ghcr.io/open-webui/open-webui:main"
)

for IMG in "${IMAGES[@]}"; do
  docker pull "$IMG"
done

docker images --digests | egrep 'dustynv/comfyui|dustynv/ollama|open-webui' > digests.txt
docker save ${IMAGES[@]} -o jetson_bundle_$(date +%Y%m%d).tar
ls -lh jetson_bundle_*.tar digests.txt
echo "Done."
EOF
chmod +x ~/offline-images/save_all.sh

 

복구 스크립트 (오프라인 노드에서):

cat > ~/offline-images/load_all_containerd.sh <<'EOF'
#!/bin/bash
set -e
TAR=${1:-$HOME/offline-images/jetson_bundle_latest.tar}
CTR_BIN=$(command -v ctr || echo "/var/lib/rancher/k3s/agent/containerd/bin/ctr")
sudo $CTR_BIN -n=k8s.io images import "$TAR"
sudo $CTR_BIN -n=k8s.io images ls | egrep 'dustynv/comfyui|dustynv/ollama|open-webui' || true
EOF
chmod +x ~/offline-images/load_all_containerd.sh

 

정리

  • 지금 미리 이미지들을 docker save로 묶어 tar 보관하면,
    나중에 오프라인에서 docker load 또는 ctr import로 즉시 복구 가능.
  • k3s에서는 각 노드(containerd) 에 tar를 import 해야 하고, YAML은 IfNotPresent로 유지.
  • Ollama 모델까지 오프라인에서 바로 쓰려면 ollama export 또는 ~/.ollama 통째 백업 권장.

- End -

댓글

Designed by JB FACTORY