هوش مصنوعی / ابزارها و سرویس‌ها

آموزش Ollama: اجرای مدل‌های هوش مصنوعی روی سرور خودتان

نصب Ollama 0.34 روی لینوکس با systemd، اجرای مدل روی GPU، انتخاب مدل بر اساس VRAM، API سازگار با OpenAI، ایمن سازی دسترسی شبکه و نصب روی سرور آفلاین.

نوشته‌ی تیم پیکوگاید آخرین بازبینی فنی: ۱۴ دقیقه مطالعه
در این صفحه
  1. Ollama از چه بخش‌هایی تشکیل شده است
  2. پیش نیازها و GPUهای پشتیبانی شده
  3. نصب روی لینوکس
  4. روش اول: اسکریپت رسمی
  5. روش دوم: نصب دستی
  6. بررسی نصب
  7. نصب روی ویندوز و macOS
  8. دانلود و اجرای مدل
  9. مدل روی GPU اجرا می‌شود یا CPU؟
  10. کدام مدل با چه مقدار VRAM
  11. tagهای quantization
  12. طول context
  13. کار با API
  14. دسترسی از شبکه، بدون باز گذاشتن API
  15. تنظیمات سرویس با override
  16. Modelfile: مدل سفارشی با system prompt
  17. نصب روی سرور بدون اینترنت
  18. نصب Ollama
  19. وارد کردن مدل GGUF
  20. به روزرسانی
  21. مشکلات رایج
  22. قدم بعدی

Ollama یک نرم افزار متن باز (مجوز MIT) برای اجرای مدل‌های زبانی با وزن باز روی سرور خودتان است. مدل را با یک دستور از کتابخانه‌ی ollama.com دانلود می‌کند، روی GPU اجرا می‌کند (اگر GPU نباشد یا مدل در آن جا نشود، روی CPU) و یک API روی پورت 11434 در اختیار برنامه‌ها می‌گذارد. نصب روی لینوکس چند دقیقه طول می‌کشد و Ollama به صورت سرویس systemd اجرا می‌شود. مهم‌ترین نکته‌ی امنیتی: API محلی Ollama احراز هویت ندارد، پس پورت آن را مستقیم روی شبکه باز نکنید. برای انتخاب GPU و حساب حافظه، سخت افزار لازم برای اجرای LLM روی سرور را ببینید.

Ollama از چه بخش‌هایی تشکیل شده است

  • موتور اجرا: بر پایه‌ی llama.cpp و فرمت GGUF؛ روی Mac با Apple Silicon موتور MLX هم دارد. اگر مدل در VRAM جا نشود، بخشی از لایه‌ها روی CPU اجرا می‌شود.
  • کتابخانه‌ی مدل: مدل‌ها در ollama.com/library با نام model:tag معرفی می‌شوند، مثل llama3.3:70b؛ بدون tag، latest دانلود می‌شود.
  • API: یک REST API روی 127.0.0.1:11434، به اضافه‌ی endpointهای سازگار با OpenAI زیر مسیر /v1.

پیش نیازها و GPUهای پشتیبانی شده

سخت افزار شرط Ollama
NVIDIA compute capability 5.0 به بالا و درایور 550 یا جدیدتر؛ کارت‌های 5.0 تا 6.2 درایور 570 به بعد می‌خواهند
AMD در لینوکس درایور ROCm v7؛ از جمله Radeon RX 7900 و 9070، Radeon PRO W7900 و Instinct MI300X و MI350X
سایر GPUهای AMD و Intel از طریق Vulkan
Apple تراشه‌های سری M روی macOS 14 به بعد؛ Macهای Intel فقط با CPU
بدون GPU اجرا روی CPU، به مراتب کندتر

compute capability هر کارت در صفحه‌ی CUDA GPUs سایت NVIDIA آمده است (مثلاً سری RTX 40 برابر 8.9 و H100 برابر 9.0). پیش از نصب، درایور NVIDIA را نصب کنید و با nvidia-smi مطمئن شوید کارت دیده می‌شود. هر مدل هم از چند گیگابایت تا صدها گیگابایت فضای دیسک می‌گیرد.

نصب روی لینوکس

روش اول: اسکریپت رسمی

دستور رسمی نصب curl -fsSL https://ollama.com/install.sh | sh است. روی سرور، اسکریپت را اول دانلود و بخوانید، بعد اجرا کنید:

curl -fsSL https://ollama.com/install.sh -o ollama-install.sh
less ollama-install.sh
sh ollama-install.sh

اسکریپت این کارها را انجام می‌دهد:

  • فایل اجرایی را در /usr/local/bin و کتابخانه‌ها را در /usr/local/lib/ollama می‌گذارد.
  • کاربر سیستمی ollama را می‌سازد و آن را عضو گروه‌های render و video می‌کند.
  • سرویس /etc/systemd/system/ollama.service را می‌سازد، فعال می‌کند و اجرا می‌کند.
  • اگر GPU از نوع AMD پیدا کند، بسته‌ی ROCm را هم دانلود می‌کند. اگر GPU از نوع NVIDIA باشد ولی nvidia-smi کار نکند، روی برخی توزیع‌ها مخزن CUDA را اضافه و درایور NVIDIA را نصب می‌کند.

روش دوم: نصب دستی

curl -fsSL https://ollama.com/download/ollama-linux-amd64.tar.zst \
    | sudo tar x -C /usr
# فقط اگر GPU از نوع AMD دارید:
curl -fsSL https://ollama.com/download/ollama-linux-amd64-rocm.tar.zst \
    | sudo tar x -C /usr

برای سرور ARM64 فایل ollama-linux-arm64.tar.zst را بگیرید. بعد کاربر سرویس را بسازید:

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

با GPU از نوع AMD، کاربر ollama را عضو گروه‌های render و video هم بکنید (sudo usermod -a -G render,video ollama). فایل /etc/systemd/system/ollama.service:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now ollama

بررسی نصب

ollama -v
systemctl status ollama
journalctl -u ollama --no-pager -n 50

Ollama هنگام شروع، GPUها و VRAM آزاد آن‌ها را بررسی می‌کند. اگر GPU شناسایی نشود، دلیلش معمولاً در همین لاگ است.

نصب روی ویندوز و macOS

  • ویندوز: OllamaSetup.exe را از ollama.com/download اجرا کنید. نصب در پوشه‌ی کاربر و بدون دسترسی Administrator انجام می‌شود. حداقل Windows 10 22H2 و برای NVIDIA درایور 551.61 به بعد لازم است. متغیرها را در Edit environment variables for your account بگذارید و برنامه را دوباره اجرا کنید.
  • macOS: حداقل macOS 14 (Sonoma)؛ روی تراشه‌های سری M از GPU استفاده می‌کند. متغیرها با launchctl setenv تنظیم می‌شوند.

دانلود و اجرای مدل

ollama pull qwen3.8:27b     # فقط دانلود
ollama run qwen3.8:27b      # اجرا و شروع گفتگو؛ اگر لازم باشد اول دانلود می‌کند
ollama list                 # مدل‌های دانلود شده روی دیسک
ollama ps                   # مدل‌هایی که الان در حافظه‌اند
ollama show qwen3.8:27b     # مشخصات مدل، از جمله context و quantization
ollama stop qwen3.8:27b     # خارج کردن مدل از حافظه
ollama rm qwen3.8:27b       # حذف مدل از دیسک

در گفتگوی تعاملی، /bye خارج می‌شود. با ollama run qwen3.8:27b --verbose بعد از هر پاسخ زمان بارگذاری مدل (load duration) و سرعت تولید (eval rate بر حسب توکن بر ثانیه) چاپ می‌شود؛ ساده‌ترین راه برای سنجیدن سخت افزار.

مدل روی GPU اجرا می‌شود یا CPU؟

ستون PROCESSOR در ollama ps جواب را می‌دهد. نمونه‌ی خروجی از مستندات Ollama:

NAME             ID              SIZE      PROCESSOR    CONTEXT    UNTIL
gemma4:latest    c6eb396dbd59    9.6 GB    100% GPU     131072     2 minutes from now
  • 100% GPU: کل مدل در VRAM است.
  • 100% CPU: مدل کامل در RAM اجرا می‌شود.
  • مقداری مثل 48%/52% CPU/GPU: بخشی از مدل روی CPU است و سرعت به شدت افت می‌کند.

کدام مدل با چه مقدار VRAM

حجم‌های زیر اندازه‌ی دانلود با tag پیش فرض (معمولاً q4_K_M) در کتابخانه‌ی Ollama است:

VRAM مدل‌های مناسب (حجم دانلود)
8 GB llama3.1:8b (4.9 GB)، qwen3.5:9b (6.6 GB)
12 تا 16 GB gemma4:12b (7.6 GB)، gpt-oss:20b (14 GB)
24 GB qwen3.8:27b (18 GB)، gemma4:31b (20 GB)
32 GB qwen3.6:35b (23 GB، از نوع MoE)، مدل‌های 27 تا 31 میلیاردی با context بزرگ‌تر
48 GB llama3.3:70b (43 GB، با context کوچک)، gemma4:31b-it-q8_0 (34 GB)
80 تا 96 GB gpt-oss:120b (65 GB)، llama3.3:70b-instruct-q8_0 (75 GB)، qwen3.5:122b (81 GB، فقط روی 96 GB)
چند GPU دیتاسنتری deepseek-r1:671b و deepseek-v3.1:671b (هر کدام 404 GB)
  • حجم فایل فقط وزن‌هاست. KV cache برای context و درخواست‌های هم‌زمان جدا حافظه می‌گیرد؛ چند گیگابایت VRAM خالی بگذارید.
  • طبق قاعده‌ای که در مدل زبانی بزرگ (LLM) چیست آمده، هر میلیارد پارامتر در 4 بیت حدود 0.5 GB جا می‌گیرد. فایل‌های واقعی کمی بزرگ‌ترند، چون q4_K_M به طور میانگین حدود 4.9 بیت برای هر وزن مصرف می‌کند؛ به همین دلیل مدل 70B به جای 35 GB حدود 43 GB است.
  • DeepSeek V4 (V4-Pro و V4-Flash) در کتابخانه‌ی Ollama فعلاً فقط با tag cloud عرضه می‌شود. برای اجرای محلی DeepSeek، نسخه‌های distill شده‌ی deepseek-r1 (از 1.5b تا 70b) یا مدل کامل 671B را بگیرید.

tagهای quantization

tag پیش فرض معمولاً 4 بیتی است. برای دقت دیگر، tag کامل را بدهید. حجم‌ها برای Llama 3.3 70B:

پسوند tag دقت حجم 70B
q4_K_M (پیش فرض) حدود 4.9 بیت برای هر وزن 43 GB
q8_0 حدود 8.5 بیت؛ کیفیت بالاتر با تقریباً دو برابر حافظه 75 GB
fp16 یا bf16 دقت کامل 141 GB
q3_K_M و q2_K فشرده‌تر، کیفیت پایین‌تر 34 و 26 GB
ollama pull llama3.3:70b-instruct-q8_0

برخی مدل‌های جدید tagهایی مثل nvfp4، mxfp8 و mlx هم دارند. این‌ها برای موتور MLX و سخت افزار خاص ساخته شده‌اند و روی هر سیستمی اجرا نمی‌شوند؛ اگر مطمئن نیستید، tag پیش فرض را بگیرید.

طول context

اگر context را تنظیم نکنید، Ollama بر اساس VRAM مقدار پیش فرض می‌گذارد: کمتر از 24 GiB برابر 4K، بین 24 تا 48 GiB برابر 32K و از 48 GiB به بالا 256K. مستندات Ollama برای agentها و ابزارهای کدنویسی دست کم 64000 توکن را توصیه می‌کند. چهار راه تنظیم:

  • برای کل سرور: متغیر OLLAMA_CONTEXT_LENGTH (بخش override در ادامه)
  • در هر درخواست API: "options": {"num_ctx": 32768}
  • در گفتگوی تعاملی: /set parameter num_ctx 32768
  • در Modelfile: PARAMETER num_ctx 32768

context بزرگ‌تر حافظه‌ی بیشتری برای KV cache می‌گیرد. اگر بعد از افزایش آن ستون PROCESSOR از 100% GPU به ترکیب CPU/GPU تغییر کرد، context را کم کنید.

کار با API

پاسخ‌ها به طور پیش فرض به صورت stream و توکن به توکن برمی‌گردند؛ "stream": false کل پاسخ را در یک JSON برمی‌گرداند.

curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.8:27b",
  "prompt": "Write a bash one-liner that shows free disk space on all mounts.",
  "stream": false
}'

برای گفتگو با تاریخچه و system prompt از /api/chat استفاده کنید:

curl http://localhost:11434/api/chat -d '{
  "model": "qwen3.8:27b",
  "messages": [
    {"role": "system", "content": "You are a Linux administrator. Answer briefly."},
    {"role": "user", "content": "How do I list listening TCP ports?"}
  ],
  "stream": false
}'

endpoint سازگار با OpenAI:

curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8:27b",
    "messages": [{"role": "user", "content": "Say this is a test"}]
  }'

در کتابخانه‌های OpenAI کافی است base_url را http://localhost:11434/v1/ بگذارید؛ API key اجباری است ولی Ollama آن را نادیده می‌گیرد. سرعت تولید را از تقسیم eval_count بر eval_duration (بر حسب نانوثانیه) در پاسخ API حساب کنید.

دسترسی از شبکه، بدون باز گذاشتن API

Ollama به طور پیش فرض فقط روی 127.0.0.1:11434 گوش می‌دهد و با متغیر OLLAMA_HOST می‌شود آن را روی کارت‌های شبکه باز کرد. این کار را بدون لایه‌ی محافظ انجام ندهید.

الگوی امن:

  1. OLLAMA_HOST را روی مقدار پیش فرض (127.0.0.1) نگه دارید.
  2. روی همان سرور یک reverse proxy مثل nginx با TLS و توکن بگذارید.
  3. در فایروال فقط پورت 443 را، آن هم برای شبکه‌های داخلی مجاز، باز کنید.
  4. endpointهای مدیریتی را در proxy ببندید؛ کاربران فقط به endpointهای اجرای مدل نیاز دارند.

نمونه‌ی /etc/nginx/conf.d/ollama.conf:

map $http_authorization $ollama_token_ok {
    default                                 0;
    "Bearer REPLACE_WITH_LONG_RANDOM_TOKEN" 1;
}

server {
    listen 443 ssl;
    server_name ai.corp.example.com;

    ssl_certificate     /etc/nginx/tls/ai.corp.example.com.crt;
    ssl_certificate_key /etc/nginx/tls/ai.corp.example.com.key;

    allow 192.168.10.0/24;
    deny  all;

    location ~ ^/api/(create|push|pull|delete|copy|blobs) {
        return 403;
    }

    location / {
        if ($ollama_token_ok = 0) {
            return 401;
        }
        proxy_pass http://127.0.0.1:11434;
        proxy_set_header Host localhost:11434;
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}
  • توکن را با openssl rand -hex 32 بسازید. کلاینت‌ها آن را در هدر Authorization: Bearer ... می‌فرستند؛ در کتابخانه‌های OpenAI همان مقدار api_key است.
  • proxy_buffering off توکن‌ها را بدون تأخیر به کلاینت می‌رساند. proxy_read_timeout پیش فرض nginx شصت ثانیه است و بارگذاری مدل بزرگ ممکن است بیشتر طول بکشد.
  • دانلود و حذف مدل را روی خود سرور با ollama pull و ollama rm انجام دهید.

اگر Ollama را با Docker اجرا می‌کنید، پورت را فقط روی loopback منتشر کنید (-p 127.0.0.1:11434:11434)؛ طبق مستندات Docker، پورتی که با -p 11434:11434 منتشر شود از بیرون سرور هم در دسترس است. سخت سازی بقیه‌ی سرور را هم فراموش نکنید؛ برای SSH، راهنمای سخت سازی SSH را ببینید.

تنظیمات سرویس با override

تنظیم‌ها را در فایل override بنویسید، نه در خود ollama.service؛ اسکریپت نصب در هر به روزرسانی این فایل را از نو می‌سازد.

sudo systemctl edit ollama
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
Environment="OLLAMA_KEEP_ALIVE=30m"
Environment="OLLAMA_NUM_PARALLEL=4"
Environment="OLLAMA_CONTEXT_LENGTH=16384"
Environment="OLLAMA_FLASH_ATTENTION=1"
Environment="OLLAMA_KV_CACHE_TYPE=q8_0"
Environment="OLLAMA_NO_CLOUD=1"
sudo mkdir -p /data/ollama/models
sudo chown -R ollama:ollama /data/ollama
sudo systemctl daemon-reload
sudo systemctl restart ollama
متغیر پیش فرض کاربرد
OLLAMA_HOST 127.0.0.1:11434 آدرس و پورت سرویس
OLLAMA_MODELS /usr/share/ollama/.ollama/models محل مدل‌ها؛ کاربر ollama باید روی آن دسترسی خواندن و نوشتن داشته باشد
OLLAMA_KEEP_ALIVE 5m مدت ماندن مدل در حافظه بعد از آخرین درخواست؛ عدد منفی یعنی همیشه
OLLAMA_NUM_PARALLEL 1 درخواست هم‌زمان برای هر مدل؛ حافظه به نسبت NUM_PARALLEL × CONTEXT_LENGTH بالا می‌رود
OLLAMA_MAX_LOADED_MODELS سه برابر تعداد GPU تعداد مدل‌هایی که هم‌زمان در حافظه می‌مانند
OLLAMA_MAX_QUEUE 512 طول صف درخواست؛ بیش از آن خطای 503 برمی‌گردد
OLLAMA_KV_CACHE_TYPE f16 q8_0 حدود نصف و q4_0 حدود یک چهارم حافظه‌ی KV cache را می‌گیرد؛ با Flash Attention کار می‌کند
OLLAMA_NO_CLOUD خاموش خاموش کردن مدل‌های cloud و جستجوی وب

فهرست کامل متغیرها را ollama serve --help نشان می‌دهد. پشت proxy سازمانی فقط HTTPS_PROXY را تنظیم کنید؛ HTTP_PROXY ممکن است اتصال کلاینت‌ها را مختل کند.

Modelfile: مدل سفارشی با system prompt

Modelfile مدل پایه، پارامترها و system prompt را تعریف می‌کند:

FROM qwen3.8:27b
PARAMETER temperature 0.3
PARAMETER num_ctx 16384
SYSTEM """
You are the internal assistant of the IT team at corp.example.com.
Answer in Persian. If you are not sure a command is correct, say so.
"""
ollama create it-assistant -f Modelfile
ollama run it-assistant

ollama show --modelfile qwen3.8:27b Modelfile کامل یک مدل موجود را، از جمله TEMPLATE و پارامترهایش، نشان می‌دهد.

نصب روی سرور بدون اینترنت

نصب Ollama

روی سیستمی که اینترنت دارد، ollama-linux-amd64.tar.zst (و برای AMD بسته‌ی rocm) را دانلود و به سرور منتقل کنید. روی سرور، با نصب بودن بسته‌ی zstd:

sudo tar --zstd -xf ollama-linux-amd64.tar.zst -C /usr

بعد کاربر و سرویس را مثل نصب دستی بسازید.

وارد کردن مدل GGUF

فایل GGUF مدل را از منتشر کننده‌ی رسمی آن بگیرید، checksum را بررسی کنید و منتقل کنید. Ollama هنگام import فایل GGUF را کوانتیزه نمی‌کند؛ نسخه‌ای را بگیرید که از قبل کوانتیزه شده است (مثلاً Q4_K_M). کنار فایل یک Modelfile بسازید:

FROM ./model-Q4_K_M.gguf
PARAMETER num_ctx 16384

اگر مدل در چند فایل تقسیم شده، نام فایل‌ها را تغییر ندهید و از wildcard استفاده کنید: FROM ./model-*.gguf. سپس:

ollama create local-model -f Modelfile
ollama run local-model

به روزرسانی

  • نصب با اسکریپت: اسکریپت را دوباره دانلود، بررسی و اجرا کنید. مدل‌ها دست نمی‌خورند و سرویس در پایان ری استارت می‌شود.
  • نصب دستی: اول sudo rm -rf /usr/lib/ollama، بعد tarball جدید را باز کنید و سرویس را ری استارت کنید.
  • نسخه‌ی مشخص: curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.34.2 sh

پیش از به روزرسانی سرور عملیاتی، یادداشت‌های انتشار را در GitHub بخوانید. به روزرسانی وصله‌های امنیتی را هم می‌آورد؛ CVE-2026-7482 با نسخه‌ی 0.17.1 بسته شد.

مشکلات رایج

  • مدل روی CPU اجرا می‌شود: اگر PROCESSOR در ollama ps ترکیب CPU/GPU است، مدل و context در VRAM جا نشده‌اند؛ مدل کوچک‌تر، quantization پایین‌تر یا num_ctx کمتر بگیرید. اگر 100% CPU است، GPU شناسایی نشده: nvidia-smi و journalctl -u ollama را ببینید و درایور را به روز کنید (NVIDIA نسخه‌ی 550 به بعد، AMD درایور ROCm v7). با درایور ROCm 6 یا قدیمی‌تر، شناسایی GPU با timeout شکست می‌خورد و Ollama سراغ CPU می‌رود. برای AMD عضویت کاربر ollama در گروه‌های render و video را هم بررسی کنید.
  • کمبود حافظه هنگام بارگذاری: num_ctx و OLLAMA_NUM_PARALLEL را کم کنید، KV cache را q8_0 کنید، یا OLLAMA_MAX_LOADED_MODELS=1 بگذارید. اگر برنامه‌ی دیگری هم از GPU استفاده می‌کند، با OLLAMA_GPU_OVERHEAD بخشی از VRAM را (بر حسب بایت) کنار بگذارید.
  • اولین پاسخ دیر می‌آید: در اولین درخواست، مدل از دیسک به VRAM بارگذاری می‌شود (load duration در خروجی --verbose) و بعد از پنج دقیقه بی‌کاری دوباره از حافظه خارج می‌شود. OLLAMA_KEEP_ALIVE را بیشتر کنید یا مدل را از قبل بارگذاری کنید: curl http://localhost:11434/api/generate -d '{"model": "qwen3.8:27b", "keep_alive": -1}'. prompt طولانی هم پیش از اولین توکن باید پردازش شود؛ سرعت این مرحله در prompt eval rate دیده می‌شود.
  • خطای 503: صف درخواست‌ها پر شده است. اگر VRAM اجازه می‌دهد OLLAMA_NUM_PARALLEL را بالا ببرید؛ برای ده‌ها کاربر هم‌زمان، بخش نرم افزار در سخت افزار لازم برای اجرای LLM روی سرور را ببینید.

قدم بعدی

ده سؤال واقعی از کار تیم را به دو یا سه مدل از جدول VRAM بدهید و کیفیت پاسخ و eval rate را کنار هم بگذارید؛ این آزمون بهتر از هر بنچمارکی مدل مناسب سخت افزار شما را نشان می‌دهد. برای مقایسه با سرویس‌های ابری از نظر داده و دسترسی، مقایسه‌ی ChatGPT، Claude، Gemini و DeepSeek را ببینید.

منابع

  1. Ollama Docs — Linux docs.ollama.com
  2. Ollama Docs — FAQ docs.ollama.com
  3. Ollama Docs — Hardware support docs.ollama.com
  4. Ollama Docs — Context length docs.ollama.com
  5. Ollama Docs — Modelfile Reference docs.ollama.com
  6. Ollama Docs — Importing a Model docs.ollama.com
  7. Ollama Docs — Authentication docs.ollama.com
  8. Ollama Docs — OpenAI compatibility docs.ollama.com
  9. Ollama Docs — Troubleshooting docs.ollama.com
  10. Ollama Releases (GitHub) github.com
  11. Ollama Model Library ollama.com
  12. llama.cpp — llama-quantize README github.com
  13. NVD — CVE-2026-7482 nvd.nist.gov
  14. Researchers Find 175,000 Publicly Exposed Ollama AI Servers (The Hacker News, January 2026) thehackernews.com
  15. nginx — Module ngx_http_proxy_module nginx.org
  16. Docker Docs — Port publishing and mapping docs.docker.com