Avez-vous déjà utilisé Docker mais l'avez-vous trouvé trop gourmand en ressources sur votre système ? Si tel est le cas, vous voudrez peut-être consulter Podman, un nouvel outil de Red Hat qui offre une alternative à Docker.
Podman est un outil conçu pour rendre la création et la gestion de conteneurs transparentes. Et dans ce didacticiel, vous allez installer Podman et apprendre quelques scénarios d'utilisation de base. En fin de compte, vous déciderez si Podman est le bon outil pour vous.
Prêt? Continuez à lire et recommencez à gérer les conteneurs !
Prérequis
Ce tutoriel sera une démonstration pratique. Si vous souhaitez suivre, assurez-vous d'avoir les éléments suivants.
- Une machine Linux :cette démo utilise Ubuntu 20.04 LTS, mais toutes les distributions Linux fonctionneront.
- Un utilisateur non root avec des privilèges sudo.
Installer Podman sur Ubuntu
Avant de gérer des conteneurs avec Podman, vous devez d'abord installer Podman sur votre machine car il n'est pas préinstallé dans votre distribution Linux.
Pour installer Podman sur Ubuntu, vous commencerez par mettre à jour votre gestionnaire de packages APT et ajouter le référentiel de packages Podman.
1. Ouvrez votre terminal et exécutez le apt update
commande ci-dessous pour vous assurer d'installer les dernières mises à jour. Cette commande garantit qu'il n'y a pas d'incompatibilité de package entre votre ordinateur et le référentiel de packages.
sudo apt update -y
2. Une fois que vous avez mis à jour votre index de package, exécutez le source
commande ci-dessous pour exécuter le /etc/os-release
fichier en tant que script. Cette commande garantit que votre machine reconnaîtra la version d'Ubuntu que vous utilisez.
Le fichier os-release contient des informations sur le système d'exploitation, telles que le nom et le nom de code. Le fichier peut également inclure d'autres détails tels que les numéros de version de divers composants (noyau, serveur X, etc.)
source /etc/os-release
3. Exécutez le sh -c echo
commande ci-dessous pour ajouter le kubic
référentiel de paquets deb à APT. Podman n'est pas disponible dans les référentiels par défaut d'Ubuntu, vous devrez donc ajouter le référentiel Podman avant de l'installer.
La commande ci-dessous effectue les opérations suivantes :
- Crée un nouveau fichier (
sh -c
) dans le/etc/apt/sources.list.d/
annuaire. C'est dans ce répertoire qu'APT télécharge les packages deb à installer sur votre machine.
- Assure que vous utilisez une version spécifique d'Ubuntu (
{VERSION_ID}
), qui est la version que vous avez précédemment obtenue dusource
commande ci-dessus à l'étape 2.
- Redirection de la sortie (
>
) pour écrire au bas du fichier, en veillant à ce que votre entrée soit écrite correctement dans le fichier (sources.list.d/devel:kubic:libcontainers:stable.list
).
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list"
4. Maintenant, exécutez le wget
ci-dessous pour ajouter la clé du référentiel à la liste des clés de confiance d'APT.
Red Hat héberge la clé et la signe avec une clé privée qui ne vérifie que les autres personnes qui ont leur clé publique. Cette clé garantit que Red Hat, et non quelqu'un d'autre, publie les packages que vous téléchargez et installez.
wget -nv https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key -O- | sudo apt-key add -
5. Réexécutez le apt update
pour vous assurer que la liste des packages d'APT est à jour.
sudo apt update -y
6. Ensuite, exécutez le apt install
commande ci-dessous pour installer podman
.
sudo apt install podman -y
7. Enfin, exécutez la commande ci-dessous pour vérifier le --version
installé de Podman .
podman --version
Comme vous pouvez le voir ci-dessous, la version de Podman installée est la 3.4.2, la dernière version au moment de la rédaction, et la vôtre peut être différente.
Vous pouvez également exécuter la commande podman inf ci-dessous pour afficher plus d'informations sur votre installation Podman.
podman info
Activation des registres OCI
Avant d'utiliser Podman pour créer des conteneurs, assurez-vous que Podman peut communiquer avec les registres OCI. Podman prend en charge plusieurs registres OCI simultanément afin que vous puissiez créer des conteneurs à l'aide de différents référentiels.
Ouvrez le /etc/containers/registries.conf
fichier avec l'éditeur de texte de votre choix. Ce fichier définit tous les registres avec lesquels Podman peut communiquer. Podman consulte ce fichier pour savoir à quels registres il doit se connecter.
sudo nano /etc/containers/registries.conf
Maintenant, remplissez le registries.conf fichier avec les lignes suivantes, enregistrez les modifications et fermez l'éditeur.
Ces lignes configurent Podman pour utiliser le registre public sur Docker Hub (docker.io, register.access.redhat.com ) et le registre privé (quay.io ), ce qui est recommandé.
[[registry]]
prefix="[quay.io]( )"
location="internal.registry.mirror/quay"
[[registry]]
prefix="[docker.io]( )"
location="internal.registry.mirror/docker"
[[registry]]
prefix="[registry.access.redhat.com]( )"
location="internal.registry.mirror/redhat"
Exécution de conteneurs Podman avec les privilèges Podman
Maintenant que vous avez installé Podman et configuré les registres, vous pouvez commencer à exécuter des conteneurs Podman avec les privilèges Podman. Le noyau Linux prend en charge un large éventail de contrôles d'autorisation sur ses appels système, tels que les capacités.
Dans le cas des conteneurs Podman, les fonctionnalités contrôlent le comportement par défaut de root dans l'espace de noms de l'utilisateur. Vous pouvez utiliser le --privileged
lors de l'exécution d'un conteneur pour ajouter toutes les fonctionnalités qui ne sont pas déjà présentes dans le conteneur.
1. Exécutez le podman run
commande ci-dessous pour créer un fedora
conteneur sans capacités.
podman run -d fedora sleep 100
2. Ensuite, exécutez le podman top
ci-dessous commande pour lister toutes les capacités.
podman top -l capeff
Comme indiqué ci-dessous, le conteneur standard sans racine a des capacités limitées.
3. Exécutez le podman run
commande ci-dessous pour créer un conteneur avec toutes les fonctionnalités (--privileged
).
podman run --privileged -d fedora sleep 100
4. Enfin, relancez le podman top
commande pour vérifier la différence de capacités.
podman top -l capeff
Vous remarquerez que toutes les fonctionnalités sont disponibles pour ce conteneur en raison de l'indicateur –privileged, comme indiqué ci-dessous.
Vous remarquerez que toutes les fonctionnalités sont disponibles pour ce conteneur en raison de l'indicateur –privileged, comme illustré. L'indicateur –privileged permet au conteneur de s'exécuter avec toutes les fonctionnalités, pas seulement celles déjà présentes dans le conteneur. Cet indicateur est important car il mappe l'espace de noms d'utilisateur du conteneur à l'espace de noms de l'hôte, lui donnant toutes les capacités des processus en cours d'exécution sur votre système.
Si vous ne définissez pas l'indicateur –privileged lors du lancement d'un conteneur, le conteneur aura un ensemble restreint de fonctionnalités. Dans le cas de conteneurs qui utilisent leur propre espace de noms d'utilisateur, vous devrez leur donner explicitement toutes les fonctionnalités.
Travailler avec des images et des conteneurs Podman
Maintenant que vous avez appris à ajouter des registres et des fonctionnalités OCI pour un conteneur, vous pouvez travailler avec des images et des conteneurs Podman. Pour cette démo, vous utiliserez NGINX pour une image afin de créer un conteneur.
1. Exécutez le podman search
commande ci-dessous pour lister toutes les images Podman disponibles pour nginx
podman search nginx
Ci-dessous, vous pouvez voir que vous obtenez toutes les images étiquetées disponibles pour NGINX à partir de docker.io , quay.io , et redhat.com dépôt que vous avez ajouté précédemment dans la section « Activer les registres OCI » :
- L'INDICE colonne indique où se trouvent les images.
- Le OFFICIEL colonne avec OK Le statut indique que l'image dans la ligne est créée et prise en charge par sa société officielle. Par exemple, le NGINX image avec OK status est créé et soutenu par sa société, NGINX. Ces images seront mises à jour dès que des failles de sécurité et des mises à jour de correctifs seront publiées.
- La AUTOMATISATION colonne avec OK status signifie que les images sont des builds automatisés. Ces images seront mises à jour dès que des failles de sécurité et des mises à jour de correctifs seront publiées.
2. Après avoir choisi une image NGINX à utiliser, exécutez le podman
commande ci-dessous pour télécharger (pull
) l'image sur votre ordinateur local.
Cette démo utilise le nginx :alpine car il s'agit de la plus petite image et ne peut s'exécuter que sur la mémoire, ce qui permet de gagner du temps sur les étapes de construction ultérieures.
podman pull nginx:alpine
À ce stade, vous disposez d'une nouvelle image que vous pouvez utiliser pour créer un conteneur ou l'utiliser comme image de base pour d'autres conteneurs.
3. Exécutez le podman images
commande pour voir les informations de votre nouvelle image
podman images
4. Maintenant, exécutez le podman run
commande ci-dessous pour créer un conteneur à partir de l'image (nginx:alpine
) et exécutez un nginx
serveur sur cette image.
Cette commande effectue les actions suivantes :
- Démarre le conteneur de manière interactive (
-it
) et vous permet d'attacher un terminal.
- Supprime (
--rm
) le conteneur après sa sortie/arrêt.
- Exécute le conteneur en arrière-plan (
--d
) et publie (-p
) port80
sur toutes les interfaces au port8080
sur le conteneur.
- Précisez le nom du conteneur (
--name web
).
podman run -it --rm -d -p 8080:80 --name web nginx:alpine
Vous obtiendrez un ID de conteneur aléatoire, comme indiqué ci-dessous, que vous pourrez utiliser pour surveiller/démarrer/arrêter/supprimer le conteneur. Notez l'ID du conteneur, car il est utile lors de la vérification des journaux ou de l'arrêt d'un conteneur spécifique.
5. Exécutez le podman ps
ci-dessous commande (sans arguments) pour vérifier si votre conteneur est en cours d'exécution.
podman ps
Vous pouvez voir que le conteneur Web est Up et utilise le port 8080/TCP sur votre machine hôte pour exposer sa ressource.
6. Pour revérifier, ouvrez votre navigateur Web et accédez à localhost:8080 ou l'adresse IP de votre serveur :8080 , où l'adresse IP de votre serveur est l'adresse IP de votre serveur.
Si votre conteneur fonctionne, vous verrez l'écran d'accueil par défaut de NGINX, comme illustré ci-dessous.
Si vous n'êtes pas sûr de la configuration du conteneur ou s'il contient des erreurs, exécutez la commande podman logs ci-dessous pour obtenir les fichiers journaux du conteneur. Remplacez mycontainer par votre ID de conteneur cible.
podman logs mycontainer
7. Exécutez l'un des podman stop
commandes ci-dessous pour arrêter votre conteneur. Remplacer mycontainer
par votre ID de conteneur cible, ou remplacez web
avec le nom réel du conteneur.
Puisque vous avez utilisé l'indicateur –rm à l'étape quatre, Podman supprime votre conteneur dès que vous arrêtez ce conteneur. Cette configuration permet de garder votre espace de travail sans encombrement.
# Stops the container by Container ID
podman stop mycontainer
# Stops the container by Container Name
podman stop web
8. Enfin, exécutez le podman ps
commande pour répertorier tous les conteneurs, y compris un conteneur arrêté.
podman ps -a
Votre conteneur a été supprimé lorsque vous l'avez arrêté précédemment, vous n'obtiendrez donc rien sur la liste, comme indiqué ci-dessous.
Conclusion
Tout au long de cet article, vous avez appris à installer Podman et à utiliser des images et des conteneurs pour les déploiements. À ce stade, vous pouvez maintenant utiliser les images compatibles OCI de docker.io , quay.io , et redhat.com référentiels pour créer vos propres conteneurs.
Avec ces nouvelles connaissances, pourquoi ne pas créer vos pods Kubernetes avec Podman play kube, ou commencer à utiliser Ansible pour automatiser les conteneurs Podman ?