# Images Docker disponibles

Lors de la location d'un serveur GPU sur Clore.ai, vous pouvez choisir parmi des images Docker préconfigurées ou utiliser vos propres images personnalisées.

## Images officielles Clore

Images préconstruites maintenues par Clore.ai, optimisées pour le marché décentralisé des GPU.

### Usage général

| Image Docker                              | Description                                       | Ports    | Mis à jour  |
| ----------------------------------------- | ------------------------------------------------- | -------- | ----------- |
| `cloreai/jupyter:ubuntu24.04-v2`          | Jupyter Lab + SSH sur Ubuntu 24.04                | 22, 8888 | Jan 2025 ✅  |
| `cloreai/ml-tools:0.1`                    | Jupyter Lab + serveur Web VS Code                 | 22, 8888 | Jul 2023 ⚠️ |
| `cloreai/ubuntu20.04-jupyter:latest`      | Ubuntu 20.04 + SSH + Jupyter                      | 22, 8888 | Nov 2022 ⚠️ |
| `cloreai/ubuntu-20.04-remote-desktop:1.2` | Ubuntu avec interface graphique bureau à distance | 22, 3389 | May 2023 ⚠️ |
| `cloreai/torch:2.0.1`                     | PyTorch 2.0.1 + CUDA                              | 22       | Jul 2023 ⚠️ |

### Inférence AI/ML

| Image Docker                            | Description                          | Ports | Mis à jour  |
| --------------------------------------- | ------------------------------------ | ----- | ----------- |
| `cloreai/deepseek-r1-8b:latest`         | DeepSeek R1 8B prêt à l'emploi       | 8000  | Jan 2025 ✅  |
| `cloreai/stable-diffusion-webui:latest` | AUTOMATIC1111 SD WebUI               | 7860  | Sep 2023 ⚠️ |
| `cloreai/oobabooga:1.5`                 | Interface Web de génération de texte | 7860  | Aug 2023 ⚠️ |

### Infrastructure & Mining

| Image Docker                | Description                            | Mis à jour  |
| --------------------------- | -------------------------------------- | ----------- |
| `cloreai/monitoring:0.7`    | Agent de surveillance de serveur       | Sep 2024 ✅  |
| `cloreai/hiveos:0.4`        | Intégration HiveOS                     | Feb 2025 ✅  |
| `cloreai/openvpn-proxy:0.2` | Transfert VPN/proxy                    | Feb 2025 ✅  |
| `cloreai/proxy:0.2`         | Système de redirection de ports        | Jan 2024    |
| `cloreai/automining:0.1`    | Configuration d'extraction automatique | Jun 2023 ⚠️ |
| `cloreai/kuzco:latest`      | Inférence distribuée Kuzco             | Jun 2025 ✅  |
| `cloreai/partner:nastya-01` | Outils d'intégration partenaire        | Apr 2025 ✅  |

> ⚠️ Les images marquées par ⚠️ n'ont pas été mises à jour depuis plus d'un an. Pour les charges ML, envisagez d'utiliser les **images communautaires** ci-dessous qui offrent des versions plus récentes de CUDA et des frameworks.

## Images communautaires recommandées

Images éprouvées par la communauté AI/ML plus large, avec maintenance active et versions récentes.

### Frameworks de deep learning

| Image                   | Tag                              | Description                    | Cas d'utilisation                    | Ports              |
| ----------------------- | -------------------------------- | ------------------------------ | ------------------------------------ | ------------------ |
| `pytorch/pytorch`       | `2.10.0-cuda13.0-cudnn9-runtime` | Dernier PyTorch avec CUDA 13.0 | Entraînement/inférence deep learning | 8888 (Jupyter)     |
| `nvidia/cuda`           | `13.1.1-runtime-ubuntu22.04`     | Runtime NVIDIA CUDA            | Applications CUDA personnalisées     | -                  |
| `nvidia/cuda`           | `13.1.1-devel-ubuntu22.04`       | Outils de développement CUDA   | Compilation de projets CUDA          | -                  |
| `tensorflow/tensorflow` | `2.15.0-gpu`                     | Support GPU pour TensorFlow    | Flux de travail TensorFlow           | 8888 (TensorBoard) |

### Moteurs d'inférence LLM

| Image                                           | Tag      | Description                   | Cas d'utilisation           | Ports |
| ----------------------------------------------- | -------- | ----------------------------- | --------------------------- | ----- |
| `vllm/vllm-openai`                              | `latest` | Service LLM haute performance | API LLM en production       | 8000  |
| `ghcr.io/huggingface/text-generation-inference` | `3.3.5`  | Hugging Face TGI              | Service LLM pour entreprise | 80    |
| `ollama/ollama`                                 | `latest` | Exécuteur LLM local           | Déploiement LLM local/edge  | 11434 |

### Génération d'images

| Image                             | Tag      | Description                        | Cas d'utilisation                | Ports |
| --------------------------------- | -------- | ---------------------------------- | -------------------------------- | ----- |
| `goolashe/automatic1111-sd-webui` | `latest` | Stable Diffusion WebUI             | Génération d'art IA              | 7860  |
| `sinfallas/comfyui`               | `latest` | ComfyUI basé sur des nœuds pour SD | Flux de travail d'images avancés | 8188  |

### Environnements de développement

| Image                         | Tag                            | Description            | Cas d'utilisation          | Ports |
| ----------------------------- | ------------------------------ | ---------------------- | -------------------------- | ----- |
| `jupyter/tensorflow-notebook` | `latest`                       | Jupyter + TensorFlow   | Expérimentation ML         | 8888  |
| `jupyter/pytorch-notebook`    | `latest`                       | Jupyter + PyTorch      | Recherche en deep learning | 8888  |
| `cschranz/gpu-jupyter`        | `v1.10_cuda-12.9_ubuntu-24.04` | Jupyter compatible GPU | Calcul GPU                 | 8888  |

## Sélection d'une image

### Via l'interface Web

1. Aller à **Place de marché** → Trouver un serveur → **Louer**
2. Dans le formulaire de commande, sélectionnez **Image Docker** dans le menu déroulant
3. Choisissez parmi les options préconfigurées ou saisissez une image personnalisée
4. Configurez les ports exposés (séparés par des virgules : `8888,7860,8000`)
5. Ajoutez des variables d'environnement si nécessaire
6. Soumettre la commande

### Via l'API

```json
{
  "image": "pytorch/pytorch:2.10.0-cuda13.0-cudnn9-runtime",
  "ports": [8888, 8000],
  "env": {
    "JUPYTER_ENABLE_LAB": "yes"
  }
}
```

## Images Docker personnalisées

### Registres pris en charge

* **Docker Hub**: `username/image:tag`
* **GitHub Container Registry**: `ghcr.io/user/image:tag`
* **NVIDIA NGC**: `nvcr.io/nvidia/image:tag`
* **Google Container Registry**: `gcr.io/project/image:tag`

### Exemples

```bash
# PyTorch dernier avec CUDA 12.1
pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime

# Base NVIDIA CUDA
nvidia/cuda:12.2.0-base-ubuntu22.04

# Hugging Face Transformers
huggingface/transformers-pytorch-gpu:4.35.0

# Image personnalisée
votre-username/mon-modele-ia:v1.0
```

### Exigences pour les images personnalisées

* ✅ Doit être accessible publiquement
* ✅ Doit inclure le support NVIDIA GPU pour les instances GPU
* ✅ Basée sur des images compatibles CUDA pour l'accélération GPU
* ✅ Inclure les pilotes et bibliothèques nécessaires
* ⚠️ Les images volumineuses (>10 Go) peuvent prendre plus de temps à télécharger

## Configuration des ports

Exposez des ports pour que vos applications soient accessibles depuis l'extérieur :

| Port  | Usage courant        | Framework                     |
| ----- | -------------------- | ----------------------------- |
| 22    | Accès SSH            | Système                       |
| 8888  | Jupyter Notebook/Lab | Jupyter                       |
| 7860  | Interfaces Gradio    | SD WebUI, applications Gradio |
| 8000  | Serveurs API         | vLLM, FastAPI                 |
| 3000  | Applications Web     | React, Node.js                |
| 8080  | Services HTTP        | Services web généraux         |
| 11434 | API Ollama           | Ollama                        |
| 8188  | Interface ComfyUI    | ComfyUI                       |

### Définir les ports dans le formulaire de commande

```
8888,7860,8000
```

## Variables d'environnement

Transmettez la configuration à vos conteneurs :

### Exemples courants

```bash
# Jeton Hugging Face
HF_TOKEN=hf_votre_jeton_ici

# Configuration du modèle
MODEL_NAME=meta-llama/Llama-2-7b-chat-hf
CUDA_VISIBLE_DEVICES=0

# Configuration Jupyter
JUPYTER_ENABLE_LAB=yes
JUPYTER_TOKEN=your_secure_token

# Configuration vLLM
VLLM_WORKER_MULTIPROC_METHOD=spawn
```

### Notes de sécurité

* ❌ Ne mettez pas de secrets dans les variables d'environnement
* ✅ Utilisez des jetons temporaires ou des clés API
* ✅ Montez les secrets en tant que volumes lorsque c'est possible

## Stockage persistant

### Emplacements de stockage

* `/workspace` - Généralement persistant pendant la période de location
* `/root` - Peut être réinitialisé au redémarrage du conteneur
* `/tmp` - Stockage temporaire, non persistant

### Bonnes pratiques

* Stockez les données importantes dans `/workspace`
* Utilisez un stockage externe pour les sauvegardes (S3, GCS, etc.)
* Téléchargez les modèles dans des répertoires persistants
* Utilisez des montages de volumes pour les grands ensembles de données

## Bonnes pratiques

### Sélection d'image

1. **Utilisez des tags récents** - Évitez `latest` en production, privilégiez les tags versionnés
2. **Choisissez une base appropriée** - Faites correspondre la version CUDA avec votre framework
3. **Considérez la taille de l'image** - Les images plus petites se téléchargent plus rapidement
4. **Vérifiez la maintenance** - Préférez les images activement maintenues

### Sécurité

1. **Exposez le minimum de ports** - N'exposez que les ports dont vous avez besoin
2. **Utilisez l'authentification** - Définissez des jetons pour Jupyter/interfaces web
3. **Mettez à jour régulièrement** - Utilisez des versions d'images récentes
4. **Surveillez l'accès** - Vérifiez qui se connecte à vos services

### Performance

1. **Compatibilité GPU** - Vérifiez que la version CUDA correspond à vos besoins
2. **Pré-téléchargez les modèles** - Incluez les modèles dans les images personnalisées pour un démarrage plus rapide
3. **Optimisez les conteneurs** - Utilisez des builds multi-étapes, minimisez les couches
4. **Gestion du cache** - Profitez du cache des couches Docker

## Dépannage

### L'image ne démarre pas

```bash
# Vérifiez si l'image existe et est publique
docker pull votre-image:tag

# Vérifiez la compatibilité CUDA
nvidia-smi
nvcc --version
```

**Problèmes courants :**

* L'image n'existe pas ou est privée
* Version CUDA incompatible
* Espace disque insuffisant
* Mauvaise architecture (arm64 vs x86\_64)

### GPU inaccessible

```bash
# Vérifiez la disponibilité du GPU
nvidia-smi

# Testez CUDA dans le conteneur
python -c "import torch; print(torch.cuda.is_available())"
```

**Solutions :**

* Utilisez des images de base compatibles GPU
* Assurez-vous que le NVIDIA Container Toolkit est disponible
* Vérifiez la compatibilité des pilotes CUDA

### Impossible d'accéder aux ports exposés

1. Attendez que le conteneur ait entièrement démarré (vérifiez les logs)
2. Vérifiez que le service s'exécute à l'intérieur du conteneur : `netstat -tlnp`
3. Vérifiez si le service se lie à 0.0.0.0, pas à 127.0.0.1
4. Confirmez que le port est exposé dans le formulaire de commande

### Problèmes de performance

* Utilisez un stockage SSD local pour les poids des modèles
* Optimisez les tailles de batch pour la mémoire GPU disponible
* Surveillez l'utilisation GPU : `nvidia-smi -l 1`
* Vérifiez l'utilisation CPU/mémoire : `htop`

## Exemples de démarrage rapide

### Déployer Jupyter avec PyTorch

```bash
Image : pytorch/pytorch:2.10.0-cuda13.0-cudnn9-runtime
Ports : 8888
Commande : jupyter lab --ip=0.0.0.0 --allow-root --no-browser
```

### Déployer un serveur API vLLM

```bash
Image : vllm/vllm-openai:latest
Ports : 8000
Env : MODEL_NAME=microsoft/DialoGPT-medium
Commande : python -m vllm.entrypoints.openai.api_server --model $MODEL_NAME --host 0.0.0.0
```

### Déployer Stable Diffusion WebUI

```bash
Image : goolashe/automatic1111-sd-webui:latest
Ports : 7860
Commande : --listen --api --xformers
```

### Déployer Ollama

```bash
Image : ollama/ollama:latest
Ports : 11434
Commande : ollama serve
# Ensuite : ollama run llama2 (à l'intérieur du conteneur)
```
