Artykuł Technologie

Ollama w Dockerze - uruchomienie krok po kroku

Uruchom Ollama jedną komendą: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. Kontener wystawia API na porcie 11434, a nazwany wolumen ollama trzyma modele, więc przetrwają restart i usunięcie kontenera. Dla karty NVIDIA dorzuć --gpus=all. Po starcie pobierasz model i działasz.

Poniżej rozkładam to na czynniki pierwsze: kiedy kontener ma sens, jak go odpalić krok po kroku, jak podpiąć GPU, jak złożyć Ollama z Open WebUI w jednym docker-compose.yml, co zmienia się na serwerze i które błędy wracają najczęściej. Każda komenda jest gotowa do skopiowania - bez ściany teorii przed pierwszym poleceniem.

Dlaczego Ollama w Dockerze (kiedy kontener ma sens)

W skrócie: Docker daje izolację, powtarzalność i czyste usuwanie. Ollama to runtime do uruchamiania lokalnych dużych modeli językowych (LLM) - udostępnia prosty CLI i REST API. Jest dostępna jako oficjalny, sponsorowany obraz open-source ollama/ollama na Docker Hub, więc nie musisz nic kompilować - pobierasz gotowy obraz i startujesz. Cały ekosystem opisuję w pełnym przewodniku po Ollama. Jeśli to Twój przypadek, zobacz natywną instalację Ollama, środowisko jest gotowe.

  1. Pobierz obraz i uruchom kontener (CPU). To jest komenda, od której wszystko się zaczyna:

    docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

    Rozbijmy flagi: -d uruchamia kontener w tle (detached), -v ollama:/root/.ollama montuje nazwany wolumen ollama w katalogu, gdzie Ollama trzyma modele, -p 11434:11434 mapuje port API na hosta, a --name ollama nadaje kontenerowi czytelną nazwę, żebyś nie operował na hashu ID.

  2. Pobierz model do kontenera. Modeli nie ściągasz na hoście - robisz to wewnątrz działającego kontenera:

    docker exec -it ollama ollama pull llama3.2

    To, jaki model wybrać pod swój RAM, rozpisuję w doborze modelu do zasobów nie kasuje modeli - one siedzą w wolumenie ollama, nie w kontenerze. Dopiero docker volume rm ollama usuwa pobrane modele na stałe. Higiena: trzymaj tę różnicę z tyłu głowy, zanim zaczniesz sprzątać.

Ollama z GPU NVIDIA w Dockerze

W skrócie: dorzuć --gpus=all i zainstaluj na hoście NVIDIA Container Toolkit - bez tego toolkitu kontener mimo flagi policzy na CPU. Komenda z akceleracją wygląda tak:

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

Toolkit to warstwa, która udostępnia kontenerowi sterowniki i CUDA hosta. Jego instalacja zależy od dystrybucji - konkretne polecenia znajdziesz w aktualnej dokumentacji NVIDIA Container Toolkit. Po starcie zweryfikuj, czy kontener faktycznie widzi kartę:

docker exec -it ollama nvidia-smi

Jeśli nvidia-smi pokazuje Twoją kartę, akceleracja jest podpięta. Sprawdź też logi startu kontenera (docker logs ollama) - Ollama zwykle wypisuje przy starcie, czy wykryła GPU, czy spadła na tryb CPU. Gdy nie działa: najczęstsza przyczyna to brak toolkitu lub niezgodne sterowniki na hoście - rozpisuję to w troubleshootingu GPU w Ollama, który korzysta z ROCm zamiast CUDA; reszta flag (-v, -p, --name) zostaje bez zmian, podmieniasz wyłącznie tag obrazu.

Ollama + Open WebUI przez docker-compose

W skrócie: jeden plik docker-compose.yml stawia dwa serwisy - ollama (silnik) i open-webui (interfejs w przeglądarce). Po starcie wchodzisz na http://localhost:3000, zakładasz konto i rozmawiasz z modelem przez GUI. Same podstawy docker-compose. Konfigurację samego interfejsu rozwijam w Open WebUI - instalacja i konfiguracja, tak żeby z zewnątrz dostępny był wyłącznie reverse proxy. Ustaw restart: unless-stopped na obu serwisach, żeby po restarcie hosta kontenery wstały same. Pilnuj też wolnego miejsca - kilka pobranych modeli potrafi zapełnić mniejszy dysk VPS szybciej, niż się spodziewasz, a brak miejsca to klasyczna przyczyna nieudanego pull.

Częste błędy i pułapki

Gdy nie działa, w większości przypadków to jedna z poniższych rzeczy - objaw, przyczyna, rozwiązanie. Zanim zaczniesz grzebać głębiej, sprawdź dwie podstawy: czy kontener w ogóle stoi (docker ps) i co mówią jego logi (docker logs ollama). To zwykle od razu zawęża pole poszukiwań.

  • Modele znikają po docker rm. Przyczyna: uruchomiłeś kontener bez wolumenu, więc dane siedziały w warstwie kontenera. Rozwiązanie: zawsze dodawaj -v ollama:/root/.ollama. Wtedy docker rm nie rusza modeli.
  • Port 11434 zajęty. Objaw: błąd przy starcie, że port jest w użyciu (np. działa już natywna Ollama). Rozwiązanie: zmień mapowanie hosta, np. -p 11435:11434, i odpytuj API na nowym porcie.
  • Liczy na CPU mimo --gpus=all. Przyczyna: brak NVIDIA Container Toolkit albo niezgodne sterowniki na hoście. Sprawdź docker exec -it ollama nvidia-smi; szczegóły w troubleshootingu GPU w Ollama.
  • Mylenie docker run z docker compose. To dwie ścieżki, nie łącz ich dla tego samego kontenera. Albo pojedynczy docker run, albo serwis w docker-compose.yml.
  • ollama pull na hoście zamiast w kontenerze. Polecenia modelu wykonujesz wewnątrz: docker exec -it ollama ollama pull .... Na hoście (bez natywnej instalacji) komenda ollama po prostu nie istnieje.

FAQ

Jak uruchomić Ollama w Dockerze?

Wystarczy jedna komenda: docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama. Kontener wystawia API na porcie 11434, a nazwany wolumen ollama trzyma modele. Następnie pobierasz model poleceniem docker exec -it ollama ollama pull llama3.2 i możesz go testować przez CLI lub REST API.

Gdzie Ollama w Dockerze trzyma modele?

Modele lądują w katalogu /root/.ollama wewnątrz kontenera. Jeśli zamontujesz tam nazwany wolumen flagą -v ollama:/root/.ollama, przetrwają one restart, a nawet usunięcie kontenera poleceniem docker rm. Bez wolumenu po skasowaniu kontenera musisz pobierać wszystkie modele od nowa, co przy większych plikach oznacza spore, niepotrzebne pobranie z sieci.

Jak uruchomić Ollama w Dockerze z GPU NVIDIA?

Dodaj flagę --gpus=all do komendy docker run i zainstaluj na hoście NVIDIA Container Toolkit. Bez toolkitu kontener mimo flagi policzy na CPU. Czy karta jest widoczna, sprawdzisz komendą docker exec -it ollama nvidia-smi. Dla kart AMD użyj obrazu z tagiem ollama/ollama:rocm, który korzysta z ROCm.

Jak połączyć Ollama z Open WebUI w Dockerze?

Użyj jednego pliku docker-compose.yml z dwoma serwisami: ollama i open-webui. W serwisie WebUI ustaw zmienną OLLAMA_BASE_URL na adres serwisu ollama, zmapuj port hosta 3000 na wewnętrzny port 8080 i odpal docker compose up -d. Interfejs otworzysz pod adresem http://localhost:3000, gdzie założysz konto i wybierzesz model.

Czy Ollama w Dockerze działa na Windows?

Tak, przez Docker Desktop z backendem WSL2. Komendy docker run i docker compose są identyczne jak na Linuksie, więc cały przepływ przenosi się bez zmian. Akceleracja GPU na Windowsie wymaga dodatkowej konfiguracji sterowników w WSL2 - na CPU kontener wystartuje od razu, bez tego kroku.

Jak postawić Ollama w Dockerze na serwerze?

Użyj tego samego pliku docker-compose.yml na VPS, dobierz RAM pod rozmiar modelu i dysk pod wolumen z modelami. Krytyczne: nie wystawiaj portu 11434 publicznie do internetu, bo API domyślnie nie ma autoryzacji. Postaw reverse proxy z logowaniem i ogranicz dostęp firewallem.

Co dalej

Masz działający kontener: jedna komenda na CPU, --gpus=all na GPU i gotowy docker-compose.yml z Open WebUI do skopiowania. Konkret: jeśli dopiero zaczynasz, przejdź pełny przewodnik po Ollama dla wygodnego interfejsu oraz dobór modelu do zasobów, żeby nie trafić na OOM przy pierwszym uruchomieniu.