डॉकर मॉडल रनर चीटशीट: कमांड्स और उदाहरण

डॉकर मॉडल रनर कमांड्स के लिए त्वरित संदर्भ

डॉकर मॉडल रनर (डीएमआर) डॉकर का आधिकारिक समाधान है जो स्थानीय रूप से एआई मॉडल चलाने के लिए है, जो अप्रैल 2025 में पेश किया गया था। यह चीटशीट सभी आवश्यक कमांड्स, कॉन्फ़िगरेशन, और बेस्ट प्रैक्टिसेस के लिए एक तेज़ संदर्भ प्रदान करता है।

डॉकर मॉडल रनर में उपलब्ध गेम्मा मॉडल्स की सूची

इंस्टॉलेशन

डॉकर डेस्कटॉप

जीयूआई के माध्यम से डॉकर मॉडल रनर को सक्षम करें:

  1. डॉकर डेस्कटॉप खोलें
  2. सेटिंग्सएआई टैब पर जाएं
  3. डॉकर मॉडल रनर को सक्षम करें पर क्लिक करें
  4. डॉकर डेस्कटॉप को रीस्टार्ट करें

/home/rg/prj/hugo-pers/content/post/2025/10/docker-model-runner-cheatsheet/docker-model-runner_w678.jpg डॉकर मॉडल रनर विंडोज़

डॉकर इंजन (लिनक्स)

प्लगइन पैकेज इंस्टॉल करें:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker-model-plugin

# Fedora/RHEL
sudo dnf install docker-model-plugin

# Arch Linux
sudo pacman -S docker-model-plugin

इंस्टॉलेशन की पुष्टि करें:

docker model --help

डॉकर के लिए एनवीडिया आरटीएक्स समर्थन

जीपीयू पर एलएलएम्स चलाने के लिए सीपीयू के बजाय, एनवीडिया-कंटेनर-टूलकिट इंस्टॉल करें:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

फिर आप --gpus all के साथ कंटेनर चला सकते हैं

docker run --rm --gpus all <image> <command>

कंटेनर को जीपीयू देख सकता है यह जांचें:

docker run --rm --gpus all nvidia/cuda:12.2.2-base-ubi8 nvidia-smi

डॉकर मॉडल रनर के लिए एनवीडिया समर्थन जोड़ना

डॉकर मॉडल रनर को स्पष्ट जीपीयू कॉन्फ़िगरेशन की आवश्यकता होती है। मानक docker run कमांड्स के विपरीत, docker model run --gpus या -e फ्लैग्स का समर्थन नहीं करता है। इसके बजाय, आपको:

  1. डॉकर डेमन को एनवीडिया रनटाइम का उपयोग करने के लिए कॉन्फ़िगर करें

पहले यह जांचें कि एनवीडिया-कंटेनर-रनटाइम कहाँ इंस्टॉल किया गया है:

which nvidia-container-runtime

इससे आमतौर पर /usr/bin/nvidia-container-runtime आउटपुट होता है। नीचे दिए गए कॉन्फ़िगरेशन में इस पथ का उपयोग करें।

/etc/docker/daemon.json बनाएं या अपडेट करें:

sudo tee /etc/docker/daemon.json > /dev/null << 'EOF'
{
  "default-runtime": "nvidia",
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}
EOF

नोट: अगर which nvidia-container-runtime अलग पथ रिटर्न करता है, तो JSON कॉन्फ़िगरेशन में "path" वैल्यू को अनुरूप अपडेट करें।

डॉकर को रीस्टार्ट करें:

sudo systemctl restart docker

कॉन्फ़िगरेशन की पुष्टि करें:

docker info | grep -i runtime

आउटपुट में Default Runtime: nvidia दिखना चाहिए।

  1. जीपीयू समर्थन के साथ डॉकर मॉडल रनर को रीइंस्टॉल करें

डॉकर मॉडल रनर को स्पष्ट जीपीयू समर्थन के साथ इंस्टॉल/रीइंस्टॉल करना होगा:

# वर्तमान रनर को रोकें
docker model stop-runner

# CUDA GPU समर्थन के साथ रीइंस्टॉल करें
docker model reinstall-runner --gpu cuda

इससे सीपीयू-ओनली संस्करण (docker/model-runner:latest-cuda) के बजाय CUDA-सक्षम संस्करण को पुल किया जाएगा।

  1. जीपीयू एक्सेस की पुष्टि करें

जांचें कि डॉकर मॉडल रनर कंटेनर जीपीयू तक पहुंच सकता है:

docker exec docker-model-runner nvidia-smi
  1. जीपीयू के साथ मॉडल टेस्ट करें

एक मॉडल चलाएं और लॉग्स जांचें ताकि जीपीयू उपयोग की पुष्टि हो:

docker model run ai/qwen3:14B-Q6_K "who are you?"

जीपीयू की पुष्टि के लिए लॉग्स जांचें:

docker model logs | grep -i cuda

आपको निम्न संदेश दिखने चाहिए:

  • using device CUDA0 (NVIDIA GeForce RTX 4080)
  • offloaded 41/41 layers to GPU
  • CUDA0 model buffer size = 10946.13 MiB

नोट: अगर आपने पहले जीपीयू समर्थन के बिना डॉकर मॉडल रनर इंस्टॉल किया है, तो आपको --gpu cuda फ्लैग के साथ इसे रीइंस्टॉल करना होगा। डॉकर डेमन को कॉन्फ़िगर करना ही पर्याप्त नहीं है - रनर कंटेनर को स्वयं CUDA-सक्षम संस्करण होना चाहिए।

उपलब्ध जीपीयू बैकएंड्स:

  • cuda - एनवीडिया CUDA (सबसे आम)
  • rocm - AMD ROCm
  • musa - मूर थ्रेड्स MUSA
  • cann - हुआवेई CANN
  • auto - स्वचालित पता लगाना (डिफ़ॉल्ट)
  • none - सीपीयू ओनली

कोर कमांड्स

मॉडल्स को पुल करना

डॉकर हब से प्री-पैकेज्ड मॉडल्स पुल करें:

# बेसिक पुल
docker model pull ai/llama2

# विशिष्ट संस्करण पुल करें
docker model pull ai/llama2:7b-q4

# कस्टम रजिस्ट्री से पुल करें
docker model pull myregistry.com/models/mistral:latest

# एक नैमस्पेस में उपलब्ध मॉडल्स की सूची देखें
docker search ai/

मॉडल्स चलाना

एक मॉडल को स्वचालित एपीआई सर्विंग के साथ शुरू करें:

# बेसिक रन (इंटरैक्टिव)
docker model run ai/llama2 "What is Docker?"

# सर्विस के रूप में चलाएं (बैकग्राउंड)
docker model run -d

सामान्य रूप से, सीएलआई के माध्यम से मॉडल्स चलाने के लिए हमारे पास बहुत सारे विकल्प नहीं हैं:

docker model run --help
Usage:  docker model run MODEL [PROMPT]

Run a model and interact with it using a submitted prompt or chat mode

Options:
      --color string                  Use colored output (auto|yes|no) (default "auto")
      --debug                         Enable debug logging
  -d, --detach                        Load the model in the background without interaction
      --ignore-runtime-memory-check   Do not block pull if estimated runtime memory for model exceeds system resources.

मॉडल्स की सूची बनाना

डाउनलोड किए गए और चल रहे मॉडल्स देखें:

# सभी डाउनलोड किए गए मॉडल्स की सूची देखें
docker model ls

# चल रहे मॉडल्स की सूची देखें
docker model ps

# विस्तृत जानकारी के साथ सूची देखें
docker model ls --json

# विस्तृत जानकारी के साथ सूची देखें
docker model ls --openai

# शुस्त हाशकोड्स रिटर्न करेंगे
docker model ls -q

मॉडल्स को हटाना

स्थानीय स्टोरेज से मॉडल्स को हटाएं:

# विशिष्ट मॉडल को हटाएं
docker model rm ai/llama2

# बलपूर्वक हटाएं (चल रहे होने पर भी)
docker model rm -f ai/llama2

# अनुपयोगी मॉडल्स को हटाएं
docker model prune

# सभी मॉडल्स को हटाएं
docker model rm $(docker model ls -q)

मॉडल कॉन्टेक्स्ट साइज को कॉन्फ़िगर करना

हम सीएलआई का उपयोग करके किसी विशेष रिक्वेस्ट के लिए कॉन्टेक्स्ट साइज निर्दिष्ट नहीं कर सकते।

बुनियादी रूप से, हम मॉडल कॉन्टेक्स्ट साइज को केवल तीन तरीकों से नियंत्रित कर सकते हैं:

  1. खुद मॉडल पैकेज करें, जिसमें इच्छित हार्डकोडेड कॉन्टेक्स्ट साइज निर्दिष्ट किया गया हो (इसके बारे में अगले सेक्शन में अधिक जानकारी देखें।)

  2. docker model configure कमांड का उपयोग --context-size पैरामीटर के साथ करें जैसे

docker model configure --context-size=10000 ai/gemma3-qat:4B

फिर आप इसे कर्ल के साथ कॉल कर सकते हैं, लेकिन docker moder run... नहीं कर सकते - वह कॉन्फ़िगर को अनदेखा करेगा।

  1. docker-compose.yaml फाइल में, लेकिन हम इस तरह से docker-model-runner इमेज का उपयोग नहीं कर सकते, क्योंकि यह मॉडल को हार्डकोडेड कॉन्टेक्स्ट साइज 4096 पास करता है
...
models:
  llm_model:
    model: ai/gemma3-qat:4B
    context_size: 10240
...

अधिक विवरण के लिए कृपया इस विषय पर समर्पित पोस्ट देखें: डॉकर मॉडल रनर में कॉन्टेक्स्ट साइज निर्दिष्ट करना

कस्टम मॉडल्स पैकेज करना

GGUF से OCI आर्टिफैक्ट बनाना

अपने GGUF मॉडल्स को पैकेज करें:

# बेसिक पैकेजिंग
docker model package --gguf /path/to/model.gguf myorg/mymodel:latest

# मेटाडेटा के साथ पैकेजिंग
docker model package \
  --gguf /path/to/model.gguf \
  --label "description=Custom Llama model" \
  --label "version=1.0" \
  myorg/mymodel:v1.0

# पैकेज और पुश एक कमांड में
docker model package --gguf /path/to/model.gguf --push myorg/mymodel:latest

# कस्टम कॉन्टेक्स्ट साइज के साथ पैकेजिंग
docker model package \
  --gguf /path/to/model.gguf \
  --context 8192 \
  myorg/mymodel:latest

मॉडल्स प्रकाशित करना

मॉडल्स को रजिस्ट्री में पुश करें:

# डॉकर हब में लॉगिन करें
docker login

# डॉकर हब में पुश करें
docker model push myorg/mymodel:latest

# प्राइवेट रजिस्ट्री में पुश करें
docker login myregistry.com
docker model push myregistry.com/models/mymodel:latest

# टैग और पुश करें
docker model tag mymodel:latest myorg/mymodel:v1.0
docker model push myorg/mymodel:v1.0

एपीआई उपयोग

ओपनएआई-समर्थित एंडपॉइंट्स

डॉकर मॉडल रनर स्वचालित रूप से ओपनएआई-समर्थित एपीआईज को एक्सपोज करता है:

# एपीआई के साथ मॉडल शुरू करें
docker model run -d -p 8080:8080 --name llm ai/llama2

# चैट कम्प्लीशन
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama2",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

# टेक्स्ट जनरेशन
curl http://localhost:8080/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama2",
    "prompt": "Once upon a time",
    "max_tokens": 100
  }'

# स्ट्रीमिंग रिस्पॉन्स
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama2",
    "messages": [{"role": "user", "content": "Tell me a story"}],
    "stream": true
  }'

# एपीआई के माध्यम से उपलब्ध मॉडल्स की सूची देखें
curl http://localhost:8080/v1/models

# मॉडल जानकारी
curl http://localhost:8080/v1/models/llama2

डॉकर कॉम्पोज कॉन्फ़िगरेशन

बेसिक कॉम्पोज फाइल

version: '3.8'

services:
  llm:
    image: docker-model-runner
    model: ai/llama2:7b-q4
    ports:
      - "8080:8080"
    environment:
      - MODEL_TEMPERATURE=0.7
    volumes:
      - docker-model-runner-models:/models
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  docker-model-runner-models:
    external: true

मल्टी-मॉडल सेटअप

version: '3.8'

services:
  llama:
    image: docker-model-runner
    model: ai/llama2
    ports:
      - "8080:8080"

  mistral:
    image: docker-model-runner
    model: ai/mistral
    ports:
      - "8081:8080"

  embedding:
    image: docker-model-runner
    model: ai/nomic-embed-text
    ports:
      - "8082:8080"

अधिक उन्नत डॉकर कॉम्पोज कॉन्फ़िगरेशन और कमांड्स के लिए, हमारी डॉकर कॉम्पोज चीटशीट देखें जिसमें नेटवर्किंग, वॉल्यूम्स, और ऑर्केस्ट्रेशन पैटर्न्स शामिल हैं।

पर्यावरण चर

पर्यावरण चर का उपयोग करके मॉडल व्यवहार को कॉन्फ़िगर करें:

# तापमान (0.0-1.0)
MODEL_TEMPERATURE=0.7

# टॉप-प सैम्पलिंग
MODEL_TOP_P=0.9

# टॉप-क सैम्पलिंग
MODEL_TOP_K=40

# अधिकतम टोकन
MODEL_MAX_TOKENS=2048

# जीपीयू परतों की संख्या
MODEL_GPU_LAYERS=35

# बैच साइज़
MODEL_BATCH_SIZE=512

# थ्रेड काउंट (सीपीयू)
MODEL_THREADS=8

# वर्बोज़ लॉगिंग सक्षम करें
MODEL_VERBOSE=true

# प्रमाणिकता के लिए एपीआई की
MODEL_API_KEY=your-secret-key

पर्यावरण चर के साथ चलाएं:

docker model run \
  -e MODEL_TEMPERATURE=0.8 \
  -e MODEL_API_KEY=secret123 \
  ai/llama2

जीपीयू कॉन्फ़िगरेशन

स्वचालित जीपीयू पता लगाना

डीएमआर स्वचालित रूप से उपलब्ध जीपीयूज़ का पता लगाता है और उनका उपयोग करता है:

# सभी जीपीयूज़ का उपयोग करें
docker model run --gpus all ai/llama2

# विशिष्ट जीपीयू का उपयोग करें
docker model run --gpus 0 ai/llama2

# कई विशिष्ट जीपीयूज़ का उपयोग करें
docker model run --gpus 0,1,2 ai/llama2

# जीपीयू के साथ मेमोरी सीमा
docker model run --gpus all --memory 16g ai/llama2

सीपीयू-ओनली मोड

जीपीयू उपलब्ध होने पर सीपीयू इन्फरेंस को बलपूर्वक लागू करें:

docker model run --no-gpu ai/llama2

मल्टी-जीपीयू टेंसर पैरलेलिज्म

बड़े मॉडल को जीपीयूज़ के बीच वितरित करें:

docker model run \
  --gpus all \
  --tensor-parallel 2 \
  ai/llama2-70b

निरीक्षण और डिबगिंग

मॉडल विवरण देखें

# मॉडल कॉन्फ़िगरेशन का निरीक्षण करें
docker model inspect ai/llama2

# मॉडल परतें देखें
docker model history ai/llama2

# मॉडल साइज़ और मेटाडेटा की जांच करें
docker model inspect --format='{{.Size}}' ai/llama2

लॉग्स और मॉनिटरिंग

# मॉडल लॉग्स देखें
docker model logs llm

# रियल-टाइम में लॉग्स फॉलो करें
docker model logs -f llm

# अंतिम 100 पंक्तियाँ देखें
docker model logs --tail 100 llm

# टाइमस्टैम्प के साथ लॉग्स देखें
docker model logs -t llm

प्रदर्शन सांख्यिकी

# संसाधन उपयोग
docker model stats

# विशिष्ट मॉडल सांख्यिकी
docker model stats llm

# JSON प्रारूप में सांख्यिकी
docker model stats --format json

नेटवर्किंग

एपीआईज़ को एक्सपोज़ करें

# डिफ़ॉल्ट पोर्ट (8080)
docker model run -p 8080:8080 ai/llama2

# कस्टम पोर्ट
docker model run -p 3000:8080 ai/llama2

# विशिष्ट इंटरफेस पर बाइंड करें
docker model run -p 127.0.0.1:8080:8080 ai/llama2

# कई पोर्ट
docker model run -p 8080:8080 -p 9090:9090 ai/llama2

नेटवर्क कॉन्फ़िगरेशन

# कस्टम नेटवर्क बनाएं
docker network create llm-network

# कस्टम नेटवर्क पर मॉडल चलाएं
docker model run --network llm-network --name llm ai/llama2

# मौजूदा नेटवर्क से कनेक्ट करें
docker model run --network host ai/llama2

सुरक्षा

एक्सेस कंट्रोल

# एपीआई की प्रमाणिकता के साथ चलाएं
docker model run \
  -e MODEL_API_KEY=my-secret-key \
  ai/llama2

# प्रमाणिकता के साथ उपयोग करें
curl http://localhost:8080/v1/chat/completions \
  -H "Authorization: Bearer my-secret-key" \
  -H "Content-Type: application/json" \
  -d '{"model": "llama2", "messages": [...]}'

रजिस्ट्री प्रमाणिकता

# प्राइवेट रजिस्ट्री में लॉगिन करें
docker login myregistry.com -u username -p password

# प्राइवेट रजिस्ट्री से पुल करें
docker model pull myregistry.com/private/model:latest

# क्रेडेंशियल्स हेल्पर का उपयोग करें
docker login --password-stdin < token.txt

सर्वोत्तम प्रथाएँ

मॉडल चयन

# तेज़ इन्फरेंस के लिए क्वांटाइज़्ड मॉडल का उपयोग करें
docker model pull ai/llama2:7b-q4     # 4-बिट क्वांटाइज़ेशन
docker model pull ai/llama2:7b-q5     # 5-बिट क्वांटाइज़ेशन
docker model pull ai/llama2:7b-q8     # 8-बिट क्वांटाइज़ेशन

# मॉडल वैरिएंट्स की जांच करें
docker search ai/llama2

संसाधन प्रबंधन

# मेमोरी सीमाएं निर्धारित करें
docker model run --memory 8g --memory-swap 16g ai/llama2

# सीपीयू सीमाएं निर्धारित करें
docker model run --cpus 4 ai/llama2

# जीपीयू मेमोरी सीमा
docker model run --gpus all --gpu-memory 8g ai/llama2

हेल्थ चेक्स

# हेल्थ चेक के साथ चलाएं
docker model run \
  --health-cmd "curl -f http://localhost:8080/health || exit 1" \
  --health-interval 30s \
  --health-timeout 10s \
  --health-retries 3 \
  ai/llama2

उत्पादन ऑर्केस्ट्रेशन

उत्पादन तैनाती के लिए, क्यूबर्नेट्स मैनिफेस्ट्स का उपयोग करके डॉकर मॉडल रनर कंटेनर्स को ऑर्केस्ट्रेट किया जा सकता है। संसाधन सीमाएं, ऑटोस्केलिंग, और लोड बैलेंसिंग के साथ डिप्लॉयमेंट्स को परिभाषित करें। व्यापक क्यूबर्नेट्स कमांड रेफरेंस और डिप्लॉयमेंट पैटर्न्स के लिए, हमारी क्यूबर्नेट्स चीटशीट देखें।

# उदाहरण: क्यूबर्नेट्स क्लस्टर पर तैनात करें
kubectl apply -f llm-deployment.yaml

# डिप्लॉयमेंट स्केल करें
kubectl scale deployment llm --replicas=3

# सेवा के रूप में एक्सपोज़ करें
kubectl expose deployment llm --type=LoadBalancer --port=8080

समस्या निवारण

सामान्य समस्याएँ

मॉडल शुरू नहीं हो रहा है:

# उपलब्ध डिस्क स्पेस की जांच करें
df -h

# विस्तृत त्रुटि लॉग्स देखें
docker model logs --tail 50 llm

# जीपीयू उपलब्धता की पुष्टि करें
nvidia-smi  # एनवीडिया जीपीयूज़ के लिए

मेमोरी समाप्ति त्रुटियाँ:

# छोटे क्वांटाइज़्ड मॉडल का उपयोग करें
docker model pull ai/llama2:7b-q4

# संदर्भ साइज़ कम करें
docker model run -e MODEL_CONTEXT=2048 ai/llama2

# बैच साइज़ सीमा
docker model run -e MODEL_BATCH_SIZE=256 ai/llama2

धीमी इन्फरेंस:

# जीपीयू उपयोग की जांच करें
docker model stats llm

# यह सुनिश्चित करें कि जीपीयू का उपयोग हो रहा है
docker model logs llm | grep -i gpu

# जीपीयू परतें बढ़ाएं
docker model run -e MODEL_GPU_LAYERS=40 ai/llama2

निदान कमांड्स

# सिस्टम जानकारी
docker model system info

# डिस्क उपयोग
docker model system df

# अनुपयोगी संसाधनों को साफ़ करें
docker model system prune

# पूर्ण साफ़ साफ़ी (सभी मॉडल हटाएं)
docker model system prune -a

इंटीग्रेशन उदाहरण

पाइथन इंटीग्रेशन

import openai

# Docker Model Runner के लिए क्लाइंट कॉन्फ़िगर करें
client = openai.OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="not-needed"  # DMR डिफ़ॉल्ट रूप से की की आवश्यकता नहीं है
)

# चैट पूर्णता
response = client.chat.completions.create(
    model="llama2",
    messages=[
        {"role": "user", "content": "नमस्ते!"}
    ]
)

print(response.choices[0].message.content)

# स्ट्रीमिंग
stream = client.chat.completions.create(
    model="llama2",
    messages=[{"role": "user", "content": "मुझे एक कहानी सुनाएं"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

बाश स्क्रिप्ट

#!/bin/bash

# अगर चल रहा नहीं है तो मॉडल शुरू करें
if ! docker model ps | grep -q "llm"; then
    docker model run -d --name llm -p 8080:8080 ai/llama2
    echo "मॉडल शुरू होने की प्रतीक्षा कर रहे हैं..."
    sleep 10
fi

# एपीआई कॉल करें
curl -s http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "llama2",
    "messages": [{"role": "user", "content": "'"$1"'"}]
  }' | jq -r '.choices[0].message.content'

नोड.जेएस इंटीग्रेशन

import OpenAI from 'openai';

const client = new OpenAI({
    baseURL: 'http://localhost:8080/v1',
    apiKey: 'not-needed'
});

async function chat(message) {
    const completion = await client.chat.completions.create({
        model: 'llama2',
        messages: [{ role: 'user', content: message }]
    });

    return completion.choices[0].message.content;
}

// उपयोग
const response = await chat('डॉकर मॉडल रनर क्या है?');
console.log(response);

उपयोगी लिंक्स

आधिकारिक दस्तावेज़ीकरण

संबंधित चीटशीट्स

तुलना लेख