Débutant 9 minDocker

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.

Par Mohamed Meguedmi·Màj 2026-05-25·Testé sur Windows, macOS, Linux

#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.

i
Image officielle
L'image de référence est ollama/ollama sur Docker Hub. Elle est maintenue par l'équipe Ollama, signée, et publiée à chaque release. C'est elle qu'on utilise — pas une copie communautaire.

#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.
GPU AMD ou Apple Silicon
Pour AMD, l'image ollama/ollama:rocm prend le relais (variable HSA_OVERRIDE_GFX_VERSION souvent nécessaire). Sur macOS, Docker Desktop ne donne pas accès à Metal — préférez l'installation native si vous voulez exploiter le GPU Apple.

#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.

Ollama Docker — version CPU
docker run -d \
  --name ollama \
  -p 11434:11434 \
  -v ollama:/root/.ollama \
  --restart unless-stopped \
  ollama/ollama

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 :

Vérification
docker ps --filter name=ollama
curl http://localhost:11434/api/version

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.

NVIDIA Container Toolkit (Ubuntu/Debian)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
  sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
  sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

Validation rapide que Docker voit bien le GPU :

Test du passthrough GPU
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

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).

Ollama Docker — version GPU
docker rm -f ollama

docker run -d \
  --name ollama \
  --gpus all \
  -p 11434:11434 \
  -v ollama:/root/.ollama \
  --restart unless-stopped \
  ollama/ollama
!
Windows : un détail WSL2
Sur Windows, Docker Desktop tourne au-dessus de WSL2. L'accès GPU nécessite WSL2 + drivers NVIDIA Windows récents (525+). Pas de NVIDIA Container Toolkit à installer manuellement — Docker Desktop s'en occupe. Vérifiez juste que "Enable GPU" est coché dans les settings de Docker Desktop.

#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.

Télécharger Mistral 7B
docker exec -it ollama ollama pull mistral

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 :

Conversation
docker exec -it ollama ollama run mistral

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.

Appel API depuis l'hôte
curl http://localhost:11434/api/generate -d '{
  "model": "mistral",
  "prompt": "Explique la quantization Q4 en deux phrases.",
  "stream": false
}'

Pendant la génération, vérifiez que le GPU est bien sollicité :

Statut du modèle chargé
docker exec ollama ollama ps

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.

Inspecter le volume
docker volume inspect ollama

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.

Stocker les modèles ailleurs
Pour mettre les modèles sur un autre disque (SSD dédié, NAS monté), utilisez un bind mount à la place : -v /mnt/ssd/ollama:/root/.ollama. Les modèles seront alors directement dans /mnt/ssd/ollama, sans passer par les volumes Docker.

Pour sauvegarder vos modèles ou les migrer vers une autre machine :

Sauvegarde du volume
docker run --rm \
  -v ollama:/data \
  -v $(pwd):/backup \
  alpine tar czf /backup/ollama-models.tar.gz -C /data .

#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.

docker-compose.yml
services:
  ollama:
    image: ollama/ollama
    container_name: ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]

volumes:
  ollama:

Posez ce fichier dans un dossier dédié, puis :

Cycle de vie
docker compose up -d        # démarrer
docker compose logs -f      # suivre les logs
docker compose pull         # mettre à jour l'image
docker compose down         # arrêter (volume préservé)
docker compose down -v      # arrêter + supprimer le volume (efface tous les modèles)
i
Pas de GPU ?
Supprimez le bloc deploy: en entier. Le reste du compose marche tel quel en CPU pur. Pour passer en GPU plus tard, il suffira de remettre le bloc et de lancer docker compose up -d, sans rien casser.

#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.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.