Перейти к содержанию
modelium.
Начать с задачи
←

Ollama в Docker Compose с GPU: запуск и проверка модели

На Linux с NVIDIA настройте драйвер и NVIDIA Container Toolkit, затем передайте GPU сервису Ollama через reservation в Compose с `capabilities: [gpu]`. После запуска модели проверьте `ollama ps` внутри контейнера: наличие GPU у Docker и фактическое размещение весов — разные проверки. Этот путь не подходит для GPU-пасстру Docker Desktop на macOS; скорость и совместимость конкретного железа нужно измерить самостоятельно.

Источники сверены 3 октября 2026 года по закреплённым ревизиям. Ни Docker, ни Ollama, ни GPU Modelium не запускал: команды и конфигурация ниже — проверенный по документации план теста на вашем устройстве, не отчёт о выполненном прогоне. Версии драйвера, Docker, Toolkit, образа и модели записывайте при собственном испытании. s1 s4 s6

Когда нужен отдельный Compose-сервис?

Если Ollama должна жить рядом с другим локальным приложением, Compose описывает сервис, GPU и постоянный том в одном файле. Этот гайд посвящён контейнерному развёртыванию Ollama на Linux с NVIDIA и проверке размещения модели; общий обзор Ollama и диагностика CPU fallback решают соседние задачи. Сама поддержка GPU зависит от видеокарты и драйвера, а не появляется от записи capabilities: [gpu]. s1 s2 s4

Ожидаемое свидетельство результата — контейнер с доступом к GPU, ответ выбранной локальной модели и её строка PROCESSOR в ollama ps. Даже 100% GPU показывает размещение модели, не измеряет ускорение: для скорости сравнивайте время ответов на одних и тех же запросах в собственной среде; здесь таких замеров нет. s3 s7

Какие условия нужны до запуска?

На Linux проверьте nvidia-smi на хосте: установленный драйвер должен видеть NVIDIA GPU. Сверьте модель карты и версию драйвера с таблицей совместимости Ollama; поддержка конкретного GPU не выводится из размера файла модели. Docker Engine и Compose-плагин должны быть установлены, а для NVIDIA-контейнеров нужен NVIDIA Container Toolkit. Инструкцию установки Toolkit берите для своего дистрибутива из официального руководства, не смешивайте менеджеры пакетов. s2 s6 s8

Для обычного Docker daemon документация NVIDIA задаёт sudo nvidia-ctk runtime configure --runtime=docker, затем sudo systemctl restart docker. Перед перезапуском рабочего Docker учтите влияние на другие контейнеры и проверьте конфигурацию; rootless Docker использует иную процедуру в том же руководстве, эту команду нельзя выдавать за неё. Проверить доступ именно контейнера к видеокарте можно официальной пробой sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi. Вывод должен содержать вашу карту; это лишь проверка passthrough и не доказательство запуска модели в Ollama. Проба скачает образ при отсутствии в локальном кеше. s6 s7 s8

Не путайте системы: на Windows Docker Desktop документирует GPU для Linux-контейнеров с WSL2 backend и NVIDIA при выполненных условиях драйвера/WSL; этот гайд с systemctl рассчитан на Linux-хост, а не дословно на Windows. На macOS Docker Desktop не предоставляет требуемый GPU passthrough контейнеру Ollama; нативная Ollama на Mac может использовать Metal, но это другой путь запуска. s5 s3 s2

Как собрать Compose-конфигурацию без внешнего API?

В пустой директории создайте compose.yaml. Следующий однострочный JSON — допустимая flow-форма YAML для этого файла; он состоит из образа/тома/порта официального Docker-примера Ollama и GPU reservation официального Compose-примера Docker. Это редакционная адаптация двух источников, не готовый Compose-файл Ollama и не протестированный запуск. Сохраните всю строку целиком, без обратных кавычек: s1 s4

{"services":{"ollama":{"image":"ollama/ollama","ports":["127.0.0.1:11434:11434"],"volumes":["ollama:/root/.ollama"],"deploy":{"resources":{"reservations":{"devices":[{"driver":"nvidia","count":1,"capabilities":["gpu"]}]}}}}},"volumes":{"ollama":{}}}

127.0.0.1:11434:11434 ограничивает опубликованный API адресом loopback хоста; не заменяйте его на 11434:11434 на публичном сервере без отдельной защиты. Приложение в другом контейнере должно подключаться через соответствующую Docker-сеть, а не предполагать, что его localhost — Ollama. Том хранит данные моделей по пути /root/.ollama; выбранный здесь ollama/ollama — плавающий тег образа, для воспроизводимого production-пилота закрепляйте фактический digest отдельно после своей проверки. Один GPU выбран через count: 1; при нескольких картах можно вместо него использовать device_ids, но оба поля сразу запрещены. Эти границы выводятся из опубликованных Docker/Ollama настроек; отдельный аудит сетевой безопасности здесь не проводился. s1 s4 s8

Перед запуском проверьте синтаксис и итоговую конфигурацию командой docker compose config; затем выполните docker compose up -d в этой директории и смотрите docker compose logs ollama. Если конфигурация не принимается или контейнер не стартует, не переходите к заявлению об ускорении: сохраните ошибку и версии Docker/Compose/Toolkit/драйвера. capabilities: [gpu] в reservations обязателен; count и device_ids взаимоисключают друг друга. s4 s6

Как отличить доступный GPU от фактически загруженной модели?

Сначала можно выполнить docker compose exec ollama ollama list: увидите локальные теги в томе, но отсутствие нужного тега означает, что веса ещё надо получить. Официальный образец Ollama предлагает ollama run llama3.2; для этого сервиса адаптированная команда — docker compose exec ollama ollama run llama3.2. При первом запуске тег может быть загружен из сети, а объём диска и требования памяти зависят от выбранной модели. Если нужен полностью отключённый от сети контур, предварительно подготовьте образ и веса; эта процедура сама по себе не подтверждает офлайн-режим. s1 s3

Пока модель загружена, в другом терминале выполните docker compose exec ollama ollama ps. Это адаптация docker exec ... ollama run и официального ollama ps. В строке того же тега колонка PROCESSOR должна показывать 100% GPU для полного размещения на видеокарте; 100% CPU означает размещение в системной памяти, смешанный процент — на обоих устройствах. Если строка отсутствует, проверьте, что обращались к этому сервису и модель ещё загружена. Успешный nvidia-smi без этой строки не доказывает GPU-инференс конкретной модели. s1 s3 s7

Если получили CPU fallback, откройте отдельную диагностику Ollama и GPU и передайте туда версии, логи и вывод ollama ps; не делайте вывод, что GPU «слишком слабая», только по размеру весов. Для оценки памяти — памятка по видеокарте. Поскольку здесь нет собственного запуска и замеров Modelium, ожидаемые результаты — критерии проверки читателя, не наблюдения редакции. s2 s3

Что меняется для AMD и как остановить тест?

AMD — отдельная конфигурация: Ollama для Docker описывает ollama/ollama:rocm и доступ к /dev/kfd и /dev/dri; применимость зависит от поддерживаемого GPU/ROCm. Нельзя просто поменять слово NVIDIA в reservation на AMD: этот Compose-файл собран именно под NVIDIA. Для совместимости и других путей откройте гайд AMD/ROCm. На Mac для Metal используйте нативную установку, а не этот контейнерный GPU-манифест. s1 s2 s3

Для остановки сервиса выполните docker compose down в той же директории; том ollama не удаляйте, если хотите сохранить загруженные модели. Если это был изолированный учебный стенд и том больше не нужен, удаление выполняйте только после проверки имени тома и резервной копии нужных данных — это необратимая операция, не часть обычной остановки. Повторно проверяйте PROCESSOR после смены тега, драйвера или образа: прошлый вывод не является проверкой новой конфигурации. s1 s3

Следующий шаг: запустите конфигурацию на своём Linux/NVIDIA-хосте и сохраните три свидетельства для выбранного тега: nvidia-smi на хосте/в пробном контейнере, лог успешного ответа и docker compose exec ollama ollama ps. Если последнее показывает CPU, разберите CPU fallback до вывода о скорости. s3 s7

Источники

  1. Ollama — Docker: NVIDIA, AMD, том, порт и запуск модели — revision 9db4bdbad6a4981ad761aa2b603e69e8fb83212c. Получено 03.10.2026.
  2. Ollama — GPU: NVIDIA, ROCm, Metal и совместимость — revision 948f69330acf96a2310f1b53fdfc211731a386d8. Получено 03.10.2026.
  3. Ollama — FAQ: колонка PROCESSOR и Docker на macOS — revision 948f69330acf96a2310f1b53fdfc211731a386d8. Получено 03.10.2026.
  4. Docker — GPU в Compose: reservations и capabilities — revision df6b585352a8220bf9d024a94ef65b2051b94da8. Получено 03.10.2026.
  5. Docker Desktop — GPU support и Windows WSL2 — revision bc5b63c69b5a71a56c767fb6419df1e573646d49. Получено 03.10.2026.
  6. NVIDIA — установка Container Toolkit и настройка Docker — revision 4419c6bd51787c2d8947d4d549a8818d79e7320f. Получено 03.10.2026.
  7. NVIDIA — проверка контейнерного GPU через nvidia-smi — revision 3683cf9b1d476663da243bf44c1f7c6a13958b48. Получено 03.10.2026.
  8. Docker Engine — доступ к GPU контейнерам — revision 0913862a025a220863459929a93b8eaf0ffeee37. Получено 03.10.2026.