Skip to content

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:

podman play kube nomdumanifest.yaml

Supprimer un manifest k8s:

podman play kube --down

Podman-compose

Pour l'installation et documentation on peut regarder ici

podman-compose -f docker-compose.yml up -d

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

  1. Vérifiez les fichiers /etc/subuid et /etc/subgid :
cat /etc/subuid /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.

  1. 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).

echo "votre_utilisateur:231072:65536" | sudo tee -a /etc/subuid /etc/subgid

Remplacez votre_utilisateur par votre nom d'utilisateur réel.

  1. Exécutez la commande de migration :
podman system migrate

Cette commande met à jour la configuration de Podman pour utiliser les nouvelles entrées dans /etc/subuid et /etc/subgid.

  1. 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/subuid et /etc/subgid sont 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.

  1. Créez ou modifiez le fichier ~/.config/containers/containers.conf :

    [engine]
    cgroup_manager = "cgroupfs"
    

  2. 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.

# Rendre le home et les dossiers parents traversables
chmod 711 /home/$USER
chmod 711 ~/.local
chmod 711 ~/.local/share
chmod 711 ~/.local/share/containers

# Rendre le stockage lui-même accessible
chmod 755 ~/.local/share/containers/storage
chmod 755 ~/.local/share/containers/storage/overlay