logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:autres:vm:lxc:mode-utilisateur [22/06/2018 19:29]
captnfab [Utilisation de LXC en mode utilisateur non-privilégié]
doc:autres:vm:lxc:mode-utilisateur [12/07/2018 11:28]
captnfab [Préparation]
Ligne 81: Ligne 81:
 Il faut activer certaines fonctionnalités des cgroups pour que l'on puisse lancer les conteneurs utilisateurs. Il faut activer certaines fonctionnalités des cgroups pour que l'on puisse lancer les conteneurs utilisateurs.
  
-<code bash /usr/local/sbin/prepare-lxc-cgroups>​ +== Configuration du noyau == 
-#!/bin/sh +Vérifier que le fichier ''​/sys/fs/cgroup/cpuset/cgroup.clone_children''​ est bien à par défaut sur le système. 
-echo 1 > /​sys/​fs/​cgroup/​cpuset/​cgroup.clone_children +<code root>cat /​sys/​fs/​cgroup/​cpuset/​cgroup.clone_children</code> 
-echo 1 > /proc/sys/kernel/unprivileged_userns_clone+ 
 +Créer le fichier de configuration de sysctl suivant : 
 +<code ini /etc/sysctl.d/40-lxc-userns.conf>​ 
 +kernel.unprivileged_userns_clone=1 
 +net.bridge.bridge-nf-call-arptables=0 
 +net.bridge.bridge-nf-call-iptables=0 
 +net.bridge.bridge-nf-call-ip6tables=0
 </​code>​ </​code>​
  
-<code ini /​etc/​systemd/​system/​lxc-cgroups.service>​[Unit]+Et le charger dans le système : 
 +<code root>​sysctl --sys</​code>​ 
 + 
 +== Création des cgroups == 
 +Pour l'​instant,​ les cgroups nécessaires ne sont pas créés par défaut. Créer les fichiers suivant : 
 +<code bash /​usr/​local/​sbin/​prepare-lxc-cgroups>#​!/​bin/​sh 
 +LXC_USERS=$(cat /​etc/​lxc/​lxc-users) 
 +for d in /​sys/​fs/​cgroup/​* 
 +do 
 +  f=$(basename $d) 
 +  if [ "​$f"​ = "​cpuset"​ ] 
 +  then 
 +    echo 1 > $d/​cgroup.clone_children;​ 
 +  elif [ "​$f"​ = "​memory"​ ] 
 +  then 
 +    echo 1 > $d/​memory.use_hierarchy;​ 
 +  fi 
 +  for u in $LXC_USERS 
 +  do 
 +    mkdir -p $d/$u 
 +    chown -R $u $d/$u 
 +  done 
 +done 
 +</​code>​ 
 +et 
 +<code bash /​usr/​local/​bin/​move-pid-to-cgroup>#​!/​bin/​sh 
 +PID=$1 
 +for d in /​sys/​fs/​cgroup/​* 
 +do 
 +        echo $PID > $d/​$USER/​tasks 
 +done</​code>​ 
 +à rendre exécutables : 
 +<code root>​chmod a+x /​usr/​local/​sbin/​prepare-lxc-cgroups 
 +chmod +x /​usr/​local/​bin/​move-pid-to-cgroup</​code>​ 
 + 
 +== Accès == 
 +Et rajouter ''​lxcuser-test''​ dans le fichier ''/​etc/​lxc/​lxc-users''​. S'il y a plusieurs utilisateurs,​ ils doivent être séparés par un espace. 
 +<code ini /​etc/​lxc/​lxc-users>​lxcuser-test</​code>​ 
 + 
 +== Automatisation == 
 +Que l'on lancera automatiquement via systemd en créant ce service : 
 +<code ini /​etc/​systemd/​system/​lxc-cgroups.service>​ 
 +[Unit]
 Description=Préparation cgroups pour lxc Description=Préparation cgroups pour lxc
 After=local-fs.target After=local-fs.target
 + 
 [Service] [Service]
 Type=oneshot Type=oneshot
 RemainAfterExit=yes RemainAfterExit=yes
 ExecStart=/​usr/​local/​sbin/​prepare-lxc-cgroups ExecStart=/​usr/​local/​sbin/​prepare-lxc-cgroups
 +  ​
 [Install] [Install]
-WantedBy=multi-user.target</​code>​+WantedBy=multi-user.target 
 +</​code>​
  
-<code root>chmod a+x /​usr/​local/​sbin/​prepare-lxc-cgroups +Et en l'​activant : 
-systemctl enable /​etc/​systemd/​system/​lxc-cgroups.service+<code root>​systemctl enable /​etc/​systemd/​system/​lxc-cgroups.service
 systemctl daemon-reload systemctl daemon-reload
 systemctl start lxc-cgroups</​code>​ systemctl start lxc-cgroups</​code>​
- 
  
 ===== Création du conteneur ===== ===== Création du conteneur =====
Ligne 176: Ligne 224:
 ===== Utilisation du conteneur ===== ===== Utilisation du conteneur =====
  
-  ​Création+Il faut, en tant que ''​lxcuser-test'',​ et dans le shell qui lancera le conteneur, exécuter la commande suivante (qui ajoutera le shell au cgroup) : 
 +<code user>​move-pid-to-cgroup $$</​code>​ 
 + 
 +  ​Lancement
 <code user>​lxc-start -n test -d</​code>​ <code user>​lxc-start -n test -d</​code>​
  
doc/autres/vm/lxc/mode-utilisateur.txt · Dernière modification: 18/11/2020 20:51 par captnfab

Pied de page des forums

Propulsé par FluxBB