## Migrer vers Docker Hardened Images (DHI)
La migration vers [[def-docker-hardened-images|DHI]] est généralement simple et implique principalement de changer l'image de base dans votre Dockerfile.
### Points importants à vérifier
Avant de remplacer vos images par des DHI, veillez à vérifier les éléments suivants :
- **Pas de shell** : Les images non-dev n'incluent pas de shell par défaut, utilisez les images avec un tag `dev` pour les étapes de compilation
- **Utilisateur non-root** : DHI s'exécute par défaut en tant qu'utilisateur non-root
- **Point d'entrée** : Vérifiez si l'image a un point d'entrée différent, par exemple `8080` au lieu de `80`
> [!warning] Rappel ! <span style="font-weight: normal; color: var(--text-normal)">Utilisez les images avec le tag `dev` pour les étapes de build uniquement et les images runtime pour la production</span>
### Étapes de migration
1. Consultez le [catalogue DHI](https://dhi.io/) pour trouver les images disponibles
2. Identifier l'image DHI correspondante. Par exemple, si vous utilisez une image Debian, migrez vers la variante DHI Debian
3. Mettre à jour votre Dockerfile en remplaçant l'image de base :
```dockerfile
# Avant
FROM mysql:9.6
# Après
FROM dhi.io/mysql:9.6
```
4. Tester votre application :
- build de l’image
- exécution du conteneur
- validation fonctionnelle
- vérification des logs
5. Scanner les vulnérabilités avec l'un des outils de dvotre choix Trivy, Docker Scout, etc.
```bash
docker scout cves dhi.io/mysql:9.6
```
```bash
trivy image --scanners vuln --vex repo dhi.io/mysql:9.6
```
### Références
- [Docker Hardened Images (site officiel)](https://www.docker.com/products/hardened-images/)
- [Documentation DHI](https://docs.docker.com/dhi/)
- [Catalogue DHI (Hub Docker)](https://hub.docker.com/hardened-images/catalog)