Podman
Podman
Configuration post installation (debian 11)
ajouter le registre docker et rootless session
sudo loginctl enable-linger 1000
cat <<EOF | sudo tee /etc/containers/registries.conf
[registries.search]
registries = ['docker.io']
EOF
Mise a jour automatique
Tout ce qui doit être fait est d’activer le service suivant podman-auto-update
Exemple de commande générique
Executer un manifest k8s:
Supprimer un manifest k8s:
Podman-compose
Pour l'installation et documentation on peut regarder ici
résolution de problème
Permission insufisante
Problème
Lors de l'exécution d'un conteneur avec Podman, vous rencontrez l'erreur suivante :
Error: copying system image from manifest list: writing blob: adding layer with blob "sha256:...": processing tar file(potentially insufficient UIDs or GIDs available in user namespace (requested...): Check /etc/subuid and /etc/subgid if configured locally and run "podman system migrate": lchown ...: invalid argument): exit status1
Cause
Le problème est lié à la configuration des IDs subordonnés pour l'utilisateur qui exécute le conteneur. Les fichiers /etc/subuid et /etc/subgid ne sont pas correctement configurés pour cet utilisateur.
(peut être cotre shell est sanboxé attention)
Résolution
- Vérifiez les fichiers
/etc/subuidet/etc/subgid:
Vérifiez si votre utilisateur est présent dans ces fichiers. Si ce n'est pas le cas, vous devez ajouter une entrée pour votre utilisateur.
- Ajoutez une entrée pour votre utilisateur :
Déterminez une plage d'IDs subordonnés qui ne chevauche pas les IDs existants sur votre système. Vous pouvez utiliser une valeur élevée comme 231072 (ou une autre valeur qui n'est pas déjà utilisée).
Remplacez votre_utilisateur par votre nom d'utilisateur réel.
- Exécutez la commande de migration :
Cette commande met à jour la configuration de Podman pour utiliser les nouvelles entrées dans /etc/subuid et /etc/subgid.
- Vérifiez que le problème est résolu :
Essayez d'exécuter à nouveau le conteneur qui a provoqué l'erreur. Si tout se passe bien, le conteneur devrait s'exécuter sans problème.
Conseils
- Assurez-vous de choisir une plage d'IDs subordonnés qui ne chevauche pas les IDs existants sur votre système.
- Si vous avez déjà utilisé une plage d'IDs subordonnés pour un autre utilisateur, assurez-vous de choisir une nouvelle plage qui ne chevauche pas la précédente.
Notes
- Les IDs subordonnés sont utilisés pour mapper les IDs d'utilisateur et de groupe à l'intérieur d'un conteneur vers des IDs différents sur le système hôte.
- Les fichiers
/etc/subuidet/etc/subgidsont utilisés pour définir ces mappings.
En suivant ces étapes, vous devriez être en mesure de résoudre le problème lié à Podman et aux IDs subordonnés.
Erreur sd-bus call: Operation not permitted (OCI permission denied)
Problème
Lors du démarrage d'un conteneur, vous obtenez l'erreur :
Error: crun: sd-bus call: Operation not permitted: Permission denied: OCI permission denied
Cause
Podman tente d'utiliser systemd comme gestionnaire de cgroups (cgroup_manager). Dans certains environnements (notamment sur Debian ou des sessions gérées), le runtime crun n'arrive pas à communiquer avec le bus utilisateur de systemd pour créer un "scope" de contrôle.
Résolution
Forcer l'utilisation de cgroupfs au lieu de systemd.
-
Créez ou modifiez le fichier
~/.config/containers/containers.conf: -
Note importante : Les conteneurs existants conservent le paramètre utilisé lors de leur création. Si un conteneur a été créé avant cette modification, il doit être supprimé et recréé pour prendre en compte le nouveau gestionnaire.
Erreur open .../merged: Permission denied avec --userns=keep-id
Problème
Le conteneur refuse de démarrer avec une erreur de permission sur le répertoire merged de l'overlay, alors que vous êtes propriétaire des fichiers.
Cause
C'est une subtilité du mode rootless combiné à --userns=keep-id (utilisé par défaut par Distrobox).
- En mode rootless classique, l'utilisateur interne root est mappé sur votre utilisateur hôte (UID 1000).
- Avec keep-id, votre UID 1000 reste 1000 à l'intérieur du conteneur. Par conséquent, le root interne est mappé sur un UID secondaire (défini dans /etc/subuid).
- Si votre répertoire personnel ou les sous-répertoires de ~/.local/share/containers/storage ont des permissions trop restrictives (ex: 700), cet UID secondaire ne peut pas traverser les dossiers pour accéder au système de fichiers du conteneur.
Résolution
Il faut autoriser la traversée des répertoires (exécution +x) pour les "autres" (ou via des ACLs) sur toute la chaîne menant au stockage.