GNU/Linux >> Tutoriels Linux >  >> Linux

Exécutez des conteneurs sur Linux sans sudo dans Podman

Les conteneurs sont une partie importante de l'informatique moderne, et à mesure que l'infrastructure autour des conteneurs évolue, de nouveaux et meilleurs outils ont commencé à faire surface. Auparavant, vous pouviez exécuter des conteneurs uniquement avec LXC, puis Docker a gagné en popularité et les choses ont commencé à devenir plus complexes. Finalement, nous avons obtenu le système de gestion de conteneurs que nous méritions tous avec Podman, un moteur de conteneurs sans démon qui facilite la création, l'exécution et la gestion des conteneurs et des pods.

Les conteneurs s'interfacent directement avec les capacités du noyau Linux comme les cgroups et les espaces de noms, et ils génèrent de nombreux nouveaux processus dans ces espaces de noms. En bref, exécuter un conteneur, c'est littéralement exécuter un système Linux à l'intérieur un système Linux. Du point de vue du système d'exploitation, cela ressemble beaucoup à une activité administrative et privilégiée. Les utilisateurs normaux n'ont généralement pas le droit de régner librement sur les ressources système comme l'exigent les conteneurs, donc par défaut, root ou sudo des autorisations sont requises pour exécuter Podman. Cependant, ce n'est que le paramètre par défaut, et ce n'est en aucun cas le seul paramètre disponible ou prévu. Cet article montre comment configurer votre système Linux afin qu'un utilisateur normal puisse exécuter Podman sans utiliser sudo ("sans racine").

ID utilisateur des espaces de noms

Conteneurs Linux

  • Que sont les conteneurs Linux ?
  • Une introduction à la terminologie des conteneurs
  • Télécharger :Introduction aux conteneurs
  • Opérateurs Kubernetes :automatisation de la plate-forme d'orchestration de conteneurs
  • eBook :Modèles Kubernetes pour la conception d'applications cloud natives
  • Qu'est-ce que Kubernetes ?

Un espace de noms de noyau est essentiellement une construction imaginaire qui aide Linux à garder une trace des processus qui vont ensemble. Ce sont les cordes rouges de la file d'attente de Linux. Il n'y a pas réellement de différence entre les processus d'une file d'attente et d'une autre, mais il est utile de les isoler les uns des autres. Les garder séparés est la clé pour déclarer un groupe de processus un "conteneur" et l'autre groupe de processus votre système d'exploitation.

Linux suit quel utilisateur ou groupe possède chaque processus par ID utilisateur (UID) et ID de groupe (GID). Normalement, un utilisateur a accès à un millier d'UID subordonnés à attribuer aux processus enfants dans un espace de noms. Étant donné que Podman exécute un système d'exploitation subordonné entier attribué à l'utilisateur qui a démarré le conteneur, vous avez besoin de bien plus que l'attribution par défaut de sous-uids et de sous-gids.

Vous pouvez accorder à un utilisateur plus de sous-uids et de sous-gids avec le usermod commande. Par exemple, pour accorder plus de sous-uids et de sous-gids à l'utilisateur tux , choisissez un UID suffisamment élevé auquel aucun utilisateur n'est attribué (par exemple, 200 000) et incrémentez-le de plusieurs milliers :

$ sudo usermod \
--add-subuids 200000-265536 \
--add-subgids 200000-265536 \
tux

Accès à l'espace de noms

Il existe également des limites sur les espaces de noms. Cela est généralement défini très haut, mais vous pouvez vérifier l'attribution des espaces de noms par l'utilisateur avec systctl , l'outil de paramétrage du noyau :

$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633

C'est beaucoup d'espaces de noms, et c'est probablement ce que votre distribution a défini par défaut. Si votre distribution n'a pas cette propriété ou l'a définie très bas, alors vous pouvez la créer en entrant ce texte dans le fichier /etc/sysctl.d/userns.conf :

user.max_user_namespaces=28633

Chargez ce paramètre :

$ sudo sysctl -p /etc/sysctl.d/userns.conf

Exécuter un conteneur sans root

Une fois que vous avez défini votre configuration, redémarrez votre ordinateur pour vous assurer que les modifications apportées à vos paramètres utilisateur et noyau sont chargées et actives.

Après le redémarrage, essayez d'exécuter une image de conteneur :

$ podman run -it busybox echo "hello"
hello

Conteneurs comme les commandes

Les conteneurs peuvent sembler mystérieux si vous êtes nouveau, mais en réalité, ils ne sont pas différents de votre système Linux existant. Ce sont littéralement des processus exécutés sur votre système, sans le coût ou la barrière d'un environnement émulé ou d'une machine virtuelle. Tout ce qui sépare un conteneur de votre système d'exploitation, ce sont les espaces de noms du noyau, ce ne sont donc que des processus natifs avec des étiquettes différentes. Podman rend cela plus évident que jamais, et une fois que vous avez configuré Podman comme une commande sans racine, les conteneurs ressemblent plus à des commandes qu'à des environnements virtuels. Podman simplifie les conteneurs et les pods, alors essayez-le.


Linux
  1. Utilisation de sudo pour déléguer des autorisations sous Linux

  2. Comment créer un utilisateur Sudo dans Rocky Linux 8

  3. Exemples de commandes sudo sous Linux

  4. Exécutez la commande cd en tant que superutilisateur sous Linux

  5. Linux - Isoler le processus sans conteneurs

Tapez les commandes Linux en majuscules pour les exécuter en tant qu'utilisateur Sudo

Comment exécuter des commandes particulières sans mot de passe Sudo sous Linux

Comment exécuter des commandes Sudo sans mot de passe

Comment installer Podman sur Rocky Linux 8 / AlmaLinux pour exécuter des conteneurs

Comment exécuter un alias avec Sudo sous Linux

Comment exécuter les commandes sudo sans mot de passe