L‘Image Mode de RHEL (Red Hat Enterprise Linux) est une nouvelle méthode de déploiement qui utilise les technologies de conteneurs pour construire, déployer et gérer le système d’exploitation. Voici les principales caractéristiques :
Concept principal
Image Mode utilise une approche « container-native » pour livrer le système d’exploitation sous forme d’image conteneur en utilisant l’outils bootc. Cette approche permet de gérer le système d’exploitation avec les mêmes outils et workflows que les applications, voir même les intégrer dans vos pipeline.
Caractéristiques clés
- Portabilité et évolutivité : Il s’agit d’un Linux portable, évolutif et prêt pour l’IA.
- Système de fichiers immutable : Le système de fichiers racine est immutable par défaut.
- Mêmes packages RPM : Les mêmes packages RPM sont utilisé, mais sous forme d’image de base de conteneur et les mises à jour sont déployées dans une nouvelle version de l’image du conteneur de référence.
Outils et workflows
Image Mode pour RHEL est disponible via l’image conteneur publié ici (requiert un accès à notre portail client) registry.redhat.io/rhel10/rhel-bootc et peut être géré avec Podman, OpenShift Container Platform, ou d’autres outils de construction de conteneurs standards.
Cette approche révolutionnaire permet aux administrateurs système d’utiliser les mêmes compétences et outils qu’ils utilisent pour les applications conteneurisées pour gérer le système d’exploitation lui-même. Elle apporte aussi un façon très rapide de mettre à jour des milliers de systèmes, et de revenir en arrière rapidement s’il y a un souci.
Principaux cas d’utilisation :
Le mode image n’est pas adapté pour toutes les charges de travail. Nous travaillons activement chez Red Hat à augmenter le nombre de cas d’utilisation. Le mode image excelle notamment dans ces cas :
- Informatique en périphérie (pour gérer des miliers de périphériques rapidement)
- Pile applicative AI/ML
- Application et hôte gérés ensembles, de la même façon
- Hôte de conteneurs autonome
Comment construire un image bootc RHEL 10 personnalisé
Il faut avoir un compte chez Red Hat pour pouvoir accéder aux images de base Bootc, publié et maintenu par Red Hat.
Passer en root sur votre system puis :
podman login registry.redhat.io
Télécharger la dernière image de base bootc pour RHEL 10
podman pull registry.redhat.io/rhel10/rhel-bootc:latest
Créer un fichier conteneur :
vim Containerfile
FROM registry.redhat.io/rhel10/rhel-bootc:latest
# installation des composantes LAMP
RUN dnf install -y httpd mariadb && dnf clean all
# Activer les services au démarrage
RUN systemctl enable httpd
# Créer la page HTML
RUN echo '<h1 style="text-align:center;">Welcome to image mode for RHEL</h1> <?php phpinfo(); ?>' >> /var/www/html/index.html
Construire le conteneur (remplacez bien sûr par les coordonnées de votre registre de conteneurs ; ici, j’utilise le service public et gratuit de notre registre de conteneurs quay.io) :
podman build -f Containerfile -t quay.io/michael_lessard/lamp-bootc-rh10:latest
Envoyer le conteneur sur votre registre :
podman login quay.io
podman push quay.io/michael_lessard/lamp-bootc-rh10:latest
Vous avez maintenant une image Bootc personnalisée prête à être utilisée.
Comment déployer un image bootc dans une machine virtuelle (KVM)
Voici les étapes pour déployer une image Bootc afin de démarrer une machine virtuelle avec celle-ci :
Créer un fichier de configuration de machine virtuelle :
vim config.json
{
"blueprint": {
"customizations": {
"user": [
{
"name": "cloud-user",
"password": "changeme",
"key": "ssh-rsa AAAAB3Nz..........", << insérer votre clé ssh public ici
"groups": [
"wheel"
]
}
]
}
}
}
Convertir au format qcow2 (pour KVM) à l’aide des outils de conversion fournis par l’image de conteneur bootc-image-builder. N’oubliez pas de remplacer les informations de registre par celles de votre propre registre de conteneurs.
sudo podman run --rm -it --privileged -v .:/output -v $(pwd)/config.json:/config.json -v -v /var/lib/containers/storage:/var/lib/containers/storage --pull newer registry.redhat.io/rhel10/bootc-image-builder:latest --type qcow2 --config /config.json quay.io/michael_lessard/lamp-bootc:latest
Créer la machine virtuelle en utilisant l’image bootc convertie.
virt-install --name lamp-bootc --memory 4096 --vcpus 2 --disk qcow2/disk.qcow2 --import --os-variant rhel10.0
Vous avez maintenant un machine virtuelle basée sur un image de conteneur bootc =)
Manipuler l’image avec la commande bootc
Connecter vous en ssh à la machine virtuelle
virsh domifaddr lamp-bootc (pour obtenir l'adresse ip)
ssh cloud-user@(adresse_ip)
$ sudo bootc status
● Booted image: quay.io/michael_lessard/lamp-bootc-rh10:latest
Digest: sha256:afad3314991c213a3d28eb78e899f572b9e73d7aae6ee36db10d4aedd9772111
Version: 10.0 (2025-06-27 13:10:23.099147136 UTC)
Pour mettre à jour le contenu de cette machine virtuelle, vous devez modifier le Containerfile, reconstruire l’image, puis envoyer le conteneur mis à jour vers votre registre.
Par exemple ici, je rajoute le paquetage VIM :
vim Containerfile
FROM registry.redhat.io/rhel10/rhel-bootc:latest
# installation des composantes LAMP
RUN dnf install -y httpd mariadb vim && dnf clean all
# Activer les services au démarrage
RUN systemctl enable httpd
# Créer la page HTML
RUN echo '<h1 style="text-align:center;">Welcome to image mode for RHEL</h1> <?php phpinfo(); ?>' >> /var/www/html/index.html
Reconstruisez l’image mise à jour, puis envoyez le nouveau conteneur dans votre registre.
podman build -f Containerfile -t quay.io/michael_lessard/lamp-bootc-rh10:latest
podman push quay.io/michael_lessard/lamp-bootc-rh10:latest
Dans votre machine virtuelle, il suffit désormais de récupérer cette nouvelle image avec une seule commande, puis de redémarrer pour appliquer la mise à jour :
sudo bootc upgrade
sudo reboot
Et voilà =)
Si vous avez des problèmes avec votre nouvelle image, pour revenir en arrière, il suffit d’une seule commande, puis de redémarrer :
sudo bootc rollback
sudo reboot
$ sudo bootc status
● Booted image: quay.io/michael_lessard/lamp-bootc-rh10:latest
Digest: sha256:8013a1debf2c9d856bff3f4e6dc9b67e257ed15a42244d325093d4a7e9389895
Version: 10.0 (2025-06-27 13:39:35.333158477 UTC)
Rollback image: quay.io/michael_lessard/lamp-bootc-rh10:latest
Digest: sha256:afad3314991c213a3d28eb78e899f572b9e73d7aae6ee36db10d4aedd9772111
Version: 10.0 (2025-06-27 13:10:23.099147136 UTC)