Ollama avec Docker : installation et premier modèle
Faire tourner Ollama Docker plutôt qu'une installation système, c'est gagner en propreté : un conteneur isolé, un volume pour les modèles, une commande pour mettre à jour, zéro service systemd à gérer. Ce guide assemble la configuration minimale qui marche du premier coup — image officielle, GPU NVIDIA via le Container Toolkit, port 11434 exposé — puis ajoute un docker-compose.yml pour ne plus jamais retaper la commande.
#Pourquoi Ollama Docker
L'installation native d'Ollama est simple, mais elle pose un service systemd, écrit dans ~/.ollama, et mélange ses dépendances avec le reste de votre système. Sur un poste de dev ou un serveur partagé, ce n'est pas idéal.
La version Docker règle ces frictions : tout vit dans un conteneur que vous démarrez, stoppez, supprimez d'une commande. Les modèles sont stockés dans un volume nommé, donc ils survivent à la suppression du conteneur. Et vous pouvez tester plusieurs versions d'Ollama en parallèle sans conflit.
#Prérequis
- Docker Engine 20.10+
- Sur Linux, le script officiel get.docker.com fait tout. Sur Windows ou macOS, Docker Desktop.
- 8 Go de RAM minimum
- Pour des modèles 7B en Q4. 16 Go conseillés si vous comptez utiliser le poste pour autre chose en parallèle.
- 20 Go d'espace disque libre
- Le volume des modèles grossit vite. Comptez 4–5 Go pour un 7B Q4, 9 Go pour un 14B Q4, 19 Go pour un 32B Q4.
- GPU NVIDIA (optionnel)
- RTX 20/30/40/50 ou compatible CUDA. Drivers à jour côté hôte. Le NVIDIA Container Toolkit s'ajoute au-dessus.
#1. La commande docker run
Le cas le plus simple : CPU uniquement, port exposé sur l'hôte, volume nommé pour les modèles. Une seule commande.
Décortiquons chaque flag, parce qu'ils ont tous une raison d'être :
- -d
- Démarre en arrière-plan (detached). Sans ça, le terminal reste accroché au conteneur.
- --name ollama
- Nom lisible pour les commandes suivantes (docker logs ollama, docker exec, etc.).
- -p 11434:11434
- Mappe le port du conteneur vers l'hôte. C'est le port standard d'Ollama, identique à l'install native.
- -v ollama:/root/.ollama
- Volume nommé monté sur le dossier interne où Ollama stocke ses modèles. Survit à la suppression du conteneur.
- --restart unless-stopped
- Redémarre automatiquement au reboot de la machine, sauf si vous l'avez stoppé manuellement.
Vérifiez que le conteneur tourne et qu'Ollama répond :
Vous devriez voir une réponse JSON du type {"version":"0.5.x"}. Si oui, le daemon Ollama écoute déjà sur http://localhost:11434, prêt à recevoir des requêtes.
#2. Activer le GPU NVIDIA
Sans configuration spécifique, Docker ne voit pas votre GPU. Il faut installer le NVIDIA Container Toolkit côté hôte, puis ajouter --gpus all à la commande de lancement.
Validation rapide que Docker voit bien le GPU :
Si la sortie ressemble à votre nvidia-smi habituel, vous êtes prêt. Sinon, vérifiez que les drivers NVIDIA sont à jour côté hôte (nvidia-smi doit déjà marcher en dehors de Docker).
Relancez Ollama, cette fois avec accès GPU. Supprimez d'abord l'ancien conteneur (le volume ollama est préservé, vos futurs modèles aussi).
#3. Premier modèle
Le conteneur tourne mais il est vide. Tous les modèles se téléchargent via la CLI ollama, qui s'utilise depuis l'intérieur du conteneur avec docker exec.
Le téléchargement fait environ 4,1 Go en Q4_K_M (la quantization par défaut, le bon compromis qualité/mémoire). Le modèle atterrit dans le volume ollama, donc il persistera même si vous supprimez le conteneur plus tard.
Test de discussion interactive depuis le conteneur :
Au prompt >>>, tapez n'importe quelle question. Pour quitter, /bye ou Ctrl+D.
Mais le vrai cas d'usage, c'est l'API HTTP. Ollama expose un endpoint OpenAI-compatible sur le port 11434 — n'importe quel client (Python, curl, votre app) parle au conteneur comme à un Ollama natif.
Pendant la génération, vérifiez que le GPU est bien sollicité :
Dans la colonne PROCESSOR, vous devriez voir 100% GPU. Si vous voyez CPU, votre conteneur ne voit pas le GPU — relisez la section précédente et vérifiez le flag --gpus all.
#4. Volume persistant : où vivent vos modèles
Le -v ollama:/root/.ollama de la commande de lancement crée un volume Docker nommé ollama. Tous les modèles téléchargés, leurs métadonnées, et la configuration y sont stockés. Ce volume n'est pas dans le conteneur — il vit à part.
La sortie indique le Mountpoint, typiquement /var/lib/docker/volumes/ollama/_data sur Linux. C'est là que se trouvent vos fichiers GGUF physiquement. Vous pouvez les voir avec sudo ls sur ce chemin.
Pour sauvegarder vos modèles ou les migrer vers une autre machine :
#5. Docker compose minimal
Retaper la commande docker run à chaque fois est pénible. Un docker-compose.yml de 15 lignes fait pareil, en plus lisible et versionnable dans git.
Posez ce fichier dans un dossier dédié, puis :
#Docker vs install native
Les deux méthodes donnent exactement le même Ollama qui écoute sur le même port 11434. Le choix dépend du contexte.
- Choisir Docker
- Si vous gérez plusieurs services en parallèle (Open WebUI, n8n, Qdrant), si vous voulez tester plusieurs versions, si le poste est partagé, ou si vous déployez sur un serveur.
- Choisir l'install native
- Sur un Mac Apple Silicon (Docker Desktop ne donne pas accès à Metal), pour un usage purement individuel sur poste de dev, ou si vous voulez les performances brutes sans la couche d'isolation.
- Overhead de Docker
- Quasi nul sur l'inférence elle-même (le passthrough GPU est direct via le toolkit NVIDIA). Comptez 100–200 Mo de RAM en plus pour le moteur Docker lui-même.
- Mise à jour
- Docker : docker compose pull && docker compose up -d. Native : exécuter à nouveau l'installateur ou le script. Égalité.
#Dépannage
- "could not select device driver \"nvidia\""
- Le NVIDIA Container Toolkit n'est pas installé ou Docker n'a pas été redémarré après. Relancez sudo systemctl restart docker et retentez.
- Port 11434 déjà utilisé
- Une autre instance d'Ollama tourne déjà (peut-être l'install native). Stoppez-la avec sudo systemctl stop ollama avant de lancer le conteneur.
- Le modèle est lent, processor=CPU
- Docker ne voit pas le GPU. Vérifiez avec docker exec ollama nvidia-smi à l'intérieur du conteneur. Si la commande échoue, le toolkit n'est pas en place.
- Le téléchargement coupe à mi-chemin
- Coupures réseau ou pare-feu d'entreprise. Relancez ollama pull, le téléchargement reprend là où il s'est arrêté.
- Réponses tronquées
- Fenêtre de contexte par défaut limitée à 2048 tokens. Au lancement d'un modèle, ajoutez /set parameter num_ctx 8192 pour l'étendre.
- Impossible d'accéder depuis le LAN
- Le port 11434 n'est exposé que sur localhost par défaut côté hôte. Pour exposer sur le réseau local, utilisez -p 0.0.0.0:11434:11434 — mais attention, l'API n'a aucune authentification native.
#Pour aller plus loin
Vous avez un Ollama Docker fonctionnel avec un premier modèle. Les suites logiques :
- Ajouter une interface chat
- Le guide Open WebUI avec Ollama : guide complet branche un front type ChatGPT sur ce conteneur, en quelques minutes.
- Choisir d'autres modèles
- Le guide Choisir sa quantification (Q4, Q5, Q8, FP16) explique les compromis qualité/VRAM pour piocher dans la bibliothèque Ollama.
- Passer à une stack production
- Le guide Déployer un LLM en production avec Docker Compose enrichit ce setup avec Traefik (HTTPS), Qdrant, monitoring et sauvegardes.
Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.