Ceci est une ancienne révision du document !
Table des matières
Version : 2024.01
Dernière mise-à-jour : 2024/10/25 12:51
RH13409 - Gestion des Conteneurs
Contenu du Cours
- RH13409 - Gestion des Conteneurs
- Contenu du Cours
- Présentation de la Virtualisation par Isolation*
- Historique
- Conteneurs vs Machines Virtuelles
- Podman
- La Commande Podman
Présentation de la Virtualisation par Isolation
Un isolateur est un logiciel qui permet d'isoler l'exécution des applications dans des containers, des contextes ou des zones d'exécution.
Historique
- 1979 - chroot - l'isolation par changement de racine,
- 2000 - BSD Jails - l'isolation en espace utilisateur,
- 2004 - Solaris Containers - l'isolation par zones,
- 2005 - OpenVZ - l'isolation par partitionnement du noyau sous Linux,
- 2008 - LXC - LinuX Containers - l'isolation en utilisant des namespaces et des CGroups avec liblxc,
- 2013 - Docker - l'isolation en utilisant des namespaces et des CGroups avec libcontainer,
- 2014 - LXD - LinuX Container Daemon - l'isolation en utilisant des namespaces et des CGroups avec liblxc,
- 2018 - Podman - l'isolation en utilisant des namespaces et des CGroups avec libpod.
Podman
Podman, créé en 2018, est un outil open-source de gestion de conteneurs développé par Red Hat. Il offre des fonctionnalités similaires à Docker mais se distingue par sa conception “daemonless”, c'est-à-dire sans besoin de daemon en arrière-plan. Cette approche améliore la sécurité et la gestion des droits : les conteneurs peuvent être exécutés en mode rootless, évitant l'exécution en tant qu'utilisateur root, ce qui limite les risques de sécurité.
Podman est basé sur OCI (Open Container Initiative) pour la compatibilité avec les formats d'images et les standards de conteneurs, et s'appuie sur runC pour l'exécution des conteneurs. Il utilise aussi des outils comme conmon (un moniteur de conteneurs léger) pour superviser les conteneurs et libpod, une bibliothèque de gestion des conteneurs permettant d'assurer l’orchestration et la gestion des conteneurs et pods. Podman supporte également la compatibilité avec les outils et API de Docker, offrant une transition plus fluide aux utilisateurs de Docker.
Podman utilise à la fois les namespaces et les cgroups, qui sont des fonctionnalités centrales du noyau Linux pour isoler et limiter les ressources des conteneurs.
- Namespaces - Les namespaces sont utilisés pour isoler différents aspects de l'environnement d'un conteneur, comme le système de fichiers, le réseau, les processus, les utilisateurs, et les identifiants IPC. Podman, en tant qu’outil de conteneurisation, utilise les namespaces pour créer un environnement isolé pour chaque conteneur, de sorte que les processus d'un conteneur ne puissent pas interférer avec ceux des autres.
- Cgroups (Control Groups) - Les cgroups sont employés pour gérer et limiter l'utilisation des ressources (CPU, mémoire, I/O, etc.) des conteneurs. Avec Podman, chaque conteneur peut être configuré pour utiliser une quantité précise de ressources système. Cela permet une meilleure allocation et empêche qu’un conteneur monopolise les ressources du système hôte.
La combinaison des namespaces et des cgroups permet à Podman de fournir une isolation forte entre les conteneurs et de contrôler la consommation des ressources, tout en restant conforme aux standards OCI pour l'exécution des conteneurs.
La Commande Podman
Podman est du méta-paquet container-tools. Podman fournit plusieurs sous-commandes pour interagir avec les conteneurs et les images.La liste suivante présente les sous-commandes utilisées dans cette section :
Commande | Description |
---|---|
podman-build | Construire une image de conteneur avec un fichier de conteneur. |
podman-run | Exécuter une commande dans un nouveau conteneur. |
podman-images | Liste des images stockées localement. |
podman-ps | Imprimer des informations sur les conteneurs. |
podman-inspect | Affiche la configuration d'un conteneur, d'une image, d'un volume, d'un réseau ou d'un pod. |
podman-pull | Télécharger une image à partir d'un registre. |
podman-cp | Copier des fichiers ou des dossiers entre un conteneur et le système de fichiers local. |
podman-exec | Exécuter une commande dans un conteneur en cours d'exécution. |
podman-rm | Supprimer un ou plusieurs conteneurs. |
podman-rmi | Supprimer une ou plusieurs images stockées localement. |
podman-search | Recherche d'une image dans un registre. |