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 →
Ci-dessous, les différences entre deux révisions de la page.
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 [17/06/2018 11:22] captnfab |
doc:autres:vm:lxc:mode-utilisateur [12/07/2018 10:49] captnfab [Utilisation du conteneur] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
* Création par [[user>captnfab]] 09/12/2015 | * Création par [[user>captnfab]] 09/12/2015 | ||
* Testé par captnfab le 09/12/2015 | * Testé par captnfab le 09/12/2015 | ||
+ | * Testé et mis à jour par captnfab le 17/06/2018 | ||
* Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=151771#p151771 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=151771#p151771 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
Ligne 80: | 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> | + | Vérifier que le fichier ''/sys/fs/cgroup/cpuset/cgroup.clone_children'' est bien à 1 par défaut sur le système. |
- | #!/bin/sh | + | <code root>cat /sys/fs/cgroup/cpuset/cgroup.clone_children</code> |
- | echo 1 > /sys/fs/cgroup/cpuset/cgroup.clone_children | + | |
- | 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 : |
- | Description=Préparation cgroups pour lxc | + | <code root>sysctl --sys</code> |
- | After=local-fs.target | + | |
- | + | ||
- | [Service] | + | |
- | Type=oneshot | + | |
- | RemainAfterExit=yes | + | |
- | ExecStart=/usr/local/sbin/prepare-lxc-cgroups | + | |
- | + | ||
- | [Install] | + | |
- | WantedBy=multi-user.target</code> | + | |
- | + | ||
- | <code root>chmod a+x /usr/local/sbin/prepare-lxc-cgroups | + | |
- | systemctl enable /etc/systemd/system/lxc-cgroups.service | + | |
- | systemctl daemon-reload | + | |
- | systemctl start lxc-cgroups</code> | + | |
Ligne 174: | Ligne 166: | ||
===== Utilisation du conteneur ===== | ===== Utilisation du conteneur ===== | ||
+ | |||
+ | Pour l'instant, les cgroups nécessaires ne sont pas créés par défaut. Il faut, en tant que ''lxcuser-test'', lancer le script suivant avant de lancer le conteneur. | ||
+ | <code user>for d in /sys/fs/cgroup/* | ||
+ | do | ||
+ | f=$(basename $d) | ||
+ | echo "looking at $f" | ||
+ | if [ "$f" = "cpuset" ]; then | ||
+ | echo 1 | sudo tee -a $d/cgroup.clone_children; | ||
+ | elif [ "$f" = "memory" ]; then | ||
+ | echo 1 | sudo tee -a $d/memory.use_hierarchy; | ||
+ | fi | ||
+ | sudo mkdir -p $d/$USER | ||
+ | sudo chown -R $USER $d/$USER | ||
+ | echo $$ > $d/$USER/tasks | ||
+ | done</code> | ||
+ | |||
* Création | * Création | ||
Ligne 179: | Ligne 187: | ||
* Shell | * Shell | ||
- | <code user>lxc-attach --clear-env -n test</code> | + | <code user>lxc-attach --set-var PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -n test</code> |
- | <note info>Sans l'option ''--clear-env'', vous conservez les variables d'environnement de votre utilisateur. Ce n'est en général pas génant, mais ces variables incluent aussi le PATH… Donc sans clear-env, vous aurez un shell root avec un path utilisateur (ne contenant pas sbin) ce qui peut facilement générer des erreurs.</note> | + | <note info>Sans l'option ''--clear-env'', vous conservez les variables d'environnement de votre utilisateur. Ce n'est en général pas gênant, mais ces variables incluent aussi le PATH… Cependant, clear-env enlève aussi des variables intéressantes comme TERM. Pour ne pas vous retrouver avec un shell root avec un path utilisateur (ne contenant pas sbin) ce qui peut facilement générer des erreurs, ou un terminal mal configuré, utilisez l'option ''--set-var''.</note> |
===== FAQ / Problèmes rencontrés ===== | ===== FAQ / Problèmes rencontrés ===== |