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

Источник: https://modelium.tech/zhurnal/ollama-v-docker-s-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](#src-s1) [s4](#src-s4) [s6](#src-s6)

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

Если Ollama должна жить рядом с другим локальным приложением, Compose описывает сервис, GPU и постоянный том в одном файле. Этот гайд посвящён контейнерному развёртыванию **Ollama на Linux с NVIDIA** и проверке размещения модели; общий [обзор Ollama](/zapusk/ollama/) и [диагностика CPU fallback](/zhurnal/ollama-ne-ispolzuet-gpu/) решают соседние задачи. Сама поддержка GPU зависит от видеокарты и драйвера, а не появляется от записи `capabilities: [gpu]`. [s1](#src-s1) [s2](#src-s2) [s4](#src-s4)

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

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

На Linux проверьте `nvidia-smi` **на хосте**: установленный драйвер должен видеть NVIDIA GPU. Сверьте модель карты и версию драйвера с [таблицей совместимости Ollama](https://github.com/ollama/ollama/blob/948f69330acf96a2310f1b53fdfc211731a386d8/docs/gpu.mdx); поддержка конкретного GPU не выводится из размера файла модели. Docker Engine и Compose-плагин должны быть установлены, а для NVIDIA-контейнеров нужен NVIDIA Container Toolkit. Инструкцию установки Toolkit берите для **своего дистрибутива** из официального руководства, не смешивайте менеджеры пакетов. [s2](#src-s2) [s6](#src-s6) [s8](#src-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](#src-s6) [s7](#src-s7) [s8](#src-s8)

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

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

В пустой директории создайте `compose.yaml`. Следующий однострочный **JSON — допустимая flow-форма YAML** для этого файла; он состоит из образа/тома/порта официального Docker-примера Ollama и GPU reservation официального Compose-примера Docker. Это **редакционная адаптация двух источников**, не готовый Compose-файл Ollama и не протестированный запуск. Сохраните всю строку целиком, без обратных кавычек: [s1](#src-s1) [s4](#src-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](#src-s1) [s4](#src-s4) [s8](#src-s8)

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

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

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

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

Если получили CPU fallback, откройте [отдельную диагностику Ollama и GPU](/zhurnal/ollama-ne-ispolzuet-gpu/) и передайте туда версии, логи и вывод `ollama ps`; не делайте вывод, что GPU «слишком слабая», только по размеру весов. Для оценки памяти — [памятка по видеокарте](/zhurnal/videokarta-dlya-llm/). Поскольку здесь нет собственного запуска и замеров Modelium, ожидаемые результаты — **критерии проверки читателя**, не наблюдения редакции. [s2](#src-s2) [s3](#src-s3)

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

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

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

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

## Источники

1. [Ollama — Docker: NVIDIA, AMD, том, порт и запуск модели](https://github.com/ollama/ollama/blob/9db4bdbad6a4981ad761aa2b603e69e8fb83212c/docs/docker.mdx) — получено 2026-10-03
2. [Ollama — GPU: NVIDIA, ROCm, Metal и совместимость](https://github.com/ollama/ollama/blob/948f69330acf96a2310f1b53fdfc211731a386d8/docs/gpu.mdx) — получено 2026-10-03
3. [Ollama — FAQ: колонка PROCESSOR и Docker на macOS](https://github.com/ollama/ollama/blob/948f69330acf96a2310f1b53fdfc211731a386d8/docs/faq.mdx) — получено 2026-10-03
4. [Docker — GPU в Compose: reservations и capabilities](https://github.com/docker/docs/blob/df6b585352a8220bf9d024a94ef65b2051b94da8/content/manuals/compose/how-tos/gpu-support.md) — получено 2026-10-03
5. [Docker Desktop — GPU support и Windows WSL2](https://github.com/docker/docs/blob/bc5b63c69b5a71a56c767fb6419df1e573646d49/content/manuals/desktop/features/gpu.md) — получено 2026-10-03
6. [NVIDIA — установка Container Toolkit и настройка Docker](https://github.com/NVIDIA/cloud-native-docs/blob/4419c6bd51787c2d8947d4d549a8818d79e7320f/container-toolkit/install-guide.md) — получено 2026-10-03
7. [NVIDIA — проверка контейнерного GPU через nvidia-smi](https://github.com/NVIDIA/cloud-native-docs/blob/3683cf9b1d476663da243bf44c1f7c6a13958b48/container-toolkit/sample-workload.md) — получено 2026-10-03
8. [Docker Engine — доступ к GPU контейнерам](https://github.com/docker/docs/blob/0913862a025a220863459929a93b8eaf0ffeee37/content/manuals/engine/containers/gpu.md) — получено 2026-10-03
