Ollama в Docker: запуск модели и проверка локального API
Запусти Ollama в контейнере на CPU, сохрани модели в томе и проверь ответ через локальный API. Команды и разбор частых ошибок.
Ollama можно запустить в Docker, чтобы держать сервер модели отдельно от обычной установки на компьютере. Ниже — локальный запуск на CPU с сохранением моделей между перезапусками. Проверим и доступность API, и один содержательный ответ на учебное обращение.
1. Проверь Docker и выбери адрес
Нужен установленный и запущенный Docker. Команды ниже рассчитаны на Bash или Zsh, а в Windows — терминал WSL с настроенным доступом к Docker. Выполни docker version: должны быть сведения о клиенте и сервере. Если сервер недоступен, сначала запусти Docker, а не повторяй установку Ollama.
Для упражнения используем порт 11435 на компьютере, чтобы не конфликтовать с обычной Ollama на 11434. Внутри контейнера сервер останется на 11434. Интернет нужен для скачивания образа и модели; объём памяти и скорость зависят от модели и ресурсов, выделенных Docker.
Это инструкция для CPU. Не ожидай ускорения видеокартой от одной установки контейнера. Для NVIDIA и AMD у Ollama есть отдельные варианты Docker-настройки. Для первого знакомства без контейнеров подойдёт обычная установка.
2. Запусти сервер с постоянным хранилищем
Сначала выполни docker ps -a и убедись, что имя aipc-ollama не занято твоей предыдущей установкой. Для нового контейнера:
docker run -d \
--name aipc-ollama \
-v aipc-ollama-models:/root/.ollama \
-p 127.0.0.1:11435:11434 \
ollama/ollama
Команда адаптирует официальный CPU-пример: имя и внешний порт свои, доступ привязан к локальному адресу. Именованный том aipc-ollama-models хранит модели отдельно от контейнера. Не удаляй его при обычном перезапуске.
Проверь состояние и последние сообщения:
docker ps --filter name=aipc-ollama
docker logs --tail 40 aipc-ollama
curl http://127.0.0.1:11435/api/tags
Ожидается запущенный контейнер и JSON со списком моделей. Список может быть пустым: сервер установлен, но модель ещё не скачана. Адрес привязан к этому компьютеру; это не инструкция публикации API в интернете.
3. Скачай небольшую модель
Для учебной проверки возьмём llama3.2:1b из каталога Ollama. Небольшая модель удобна для проверки подключения, но её ответ не стоит принимать за эталон качества.
docker exec aipc-ollama ollama pull llama3.2:1b
docker exec aipc-ollama ollama list
Дождись завершения загрузки. В списке должно появиться то же имя. Если загрузка оборвалась, проверь сеть и место на диске. Если модель есть, но генерация завершается ошибкой, посмотри логи и доступную Docker память. Повторное скачивание не исправляет недостаток ресурсов.
4. Выполни запрос с понятным критерием
Отправь учебное сообщение через метод generate. Параметр stream: false просит один полный JSON-ответ вместо потока фрагментов.
curl http://127.0.0.1:11435/api/generate \
-H 'Content-Type: application/json' \
-d '{
"model": "llama3.2:1b",
"prompt": "Classify this support message as access, billing, or feature_request. Reply with one label only. Message: I was charged twice for my subscription.",
"stream": false
}'
В поле response ожидаем billing: учебный пользователь сообщает о двойном списании. Английский пример выбран, чтобы проверка соединения не зависела от качества русского языка маленькой модели. Для русского рабочего сценария понадобится отдельная оценка модели на русских обращениях.
Раздели результаты: JSON с непустым response подтверждает прохождение генерации, а правильная метка — успех только на одном примере. Если вместо метки получен длинный текст, подключение работает, но формат не выдержан. Не подключай такую проверку сразу к автоматической рассылке клиентам.
5. Проверь перезапуск и границы сети
Остановить и вновь включить ту же установку можно без новой команды run:
docker stop aipc-ollama
docker start aipc-ollama
docker exec aipc-ollama ollama list
После старта модель должна остаться в списке. Сохрани имя контейнера, тома, модели и дату настройки. Образ без фиксированной версии может измениться при следующем скачивании; для командного воспроизводимого окружения согласуйте проверенную версию или digest.
| Симптом | Что проверить |
|---|---|
| Имя занято | Уже существующий контейнер в docker ps -a |
| Порт занят | Другой процесс на 11435; выбери свободный внешний порт |
| API отвечает, модель не найдена | Совпадает ли имя с ollama list внутри контейнера |
| Из другой программы нет связи | Находится она на компьютере или в другом контейнере |
Адрес 127.0.0.1 внутри другого контейнера указывает на него самого. Не копируй туда адрес из этого примера без настройки сети. В руководстве по Open WebUI используется другая схема — интерфейс в Docker и Ollama на компьютере; её адрес подключения нельзя механически переносить сюда.
Моя рекомендация: запиши отдельно три проверки — сервер отвечает, модель сохранилась после перезапуска, учебная задача решена. Это помогает найти причину сбоя без переустановки всего окружения.
Проверка материала: официальные источники сверены 16 октября 2026 года. Примеры учебные; подключение MCP, запуск контейнера и обучение модели в рамках подготовки статьи не выполнялись.
Освоить рабочие сценарии с ИИ можно на курсе AI Product Club.
Собери своего ИИ-агента и проверь результат
«AI Agents: от vibe coding к AI-команде»: desktop agents, MCP, skills, evals и harness. Отдельные воркшопы — от подключения инструментов до контроля качества.
7 практических воркшопов · записи · вопросы автору в чате
Посмотреть программу курса ↗