Différences
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 | ||
lxc [Le 03/04/2019, 09:52] 185.220.101.69 test wiki -> 04/03/19 09:49:22 < *-Sp4rKy> beaver: j'ai reset le vpn je pense que ca devrait aller mieux |
lxc [Le 11/09/2022, 12:09] (Version actuelle) moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
---- | ---- | ||
{{ :lxd:containers.png?100nolink|}} | {{ :lxd:containers.png?100nolink|}} | ||
- | |||
====== LXC ====== | ====== LXC ====== | ||
- | **LXC** est l'acronyme de l'anglicisme **LinuX Containers**, est un système de [[virtualisation|virtualisation]], utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ». | + | **LXC** est l'acronyme de l'anglicisme **LinuX Containers**, est un système de [[virtualisation|virtualisation]], utilisant l'isolation comme méthode de cloisonnement au niveau du système d'exploitation. Il est utilisé pour faire fonctionner des environnements Linux isolés les uns des autres dans des conteneurs partageant le même noyau. Le conteneur apporte une virtualisation de l'environnement d'exécution (processeur, mémoire vive, réseau, système de fichier…) et non pas de la machine. Pour cette raison, on parle de « conteneur » et non de « machine virtuelle ». |
Veillez à ne pas confondre **LXC** et [[:LXD|LXD]], en effet, [[:LXD|LXD]] est une surcouche logicielle à **LXC**. [[:LXD|LXD]] est développé par Canonical pour simplifier la manipulation de vos conteneurs. | Veillez à ne pas confondre **LXC** et [[:LXD|LXD]], en effet, [[:LXD|LXD]] est une surcouche logicielle à **LXC**. [[:LXD|LXD]] est développé par Canonical pour simplifier la manipulation de vos conteneurs. | ||
Ligne 19: | Ligne 18: | ||
===== Création de notre premier container LXC (root) ===== | ===== Création de notre premier container LXC (root) ===== | ||
<note warning>Attention, bien que vos processus soient isolés de votre [[wpfr>Hôte_(informatique)|machine hôte]], via ce procédé, votre container [[apt>lxc|LXC]] nécessitera d'utiliser [[:sudo|sudo]] pour être fonctionnel. Si vous avez une faille de sécurité dans votre container, une [[wp>Privilege_escalation|escalade des privilèges]] peut être intenté sur votre container, pour accéder à votre [[wpfr>Hôte_(informatique)|machine hôte]]. L'utilisation de [[:sudo|sudo]] pourrait donc compromettre votre [[wpfr>Hôte_(informatique)|système hôte]] !.</note> | <note warning>Attention, bien que vos processus soient isolés de votre [[wpfr>Hôte_(informatique)|machine hôte]], via ce procédé, votre container [[apt>lxc|LXC]] nécessitera d'utiliser [[:sudo|sudo]] pour être fonctionnel. Si vous avez une faille de sécurité dans votre container, une [[wp>Privilege_escalation|escalade des privilèges]] peut être intenté sur votre container, pour accéder à votre [[wpfr>Hôte_(informatique)|machine hôte]]. L'utilisation de [[:sudo|sudo]] pourrait donc compromettre votre [[wpfr>Hôte_(informatique)|système hôte]] !.</note> | ||
+ | |||
Pour créer un container avec pour nom((Option -n.)) **container_xenial**, pour la distribution((Option -d.)) **Ubuntu**, sous la release((Option -r.)) **Xenial**, ayant une architecture((Option -a.)) **amd64**, nous utiliserons cette commande : | Pour créer un container avec pour nom((Option -n.)) **container_xenial**, pour la distribution((Option -d.)) **Ubuntu**, sous la release((Option -r.)) **Xenial**, ayant une architecture((Option -a.)) **amd64**, nous utiliserons cette commande : | ||
Ligne 160: | Ligne 160: | ||
<code bash>sudo lxc-stop -n container_xenial</code> | <code bash>sudo lxc-stop -n container_xenial</code> | ||
- | Et ensuite, nous passons à la destruction : | + | Et ensuite, nous passons à la destruction : |
<code bash>sudo lxc-destroy -n container_xenial</code> | <code bash>sudo lxc-destroy -n container_xenial</code> | ||
Ligne 170: | Ligne 170: | ||
Pour pouvoir utiliser [[apt>lxc|LXC]] sans [[sudo|sudo]], et donc par conséquent, minimiser le risque qu'un attaquant arrive à avoir accès à votre [[wpfr>Hôte_(informatique)|hôte système]] à cause de l'utilisation de [[sudo|sudo]], nous allons déjà récupérer le sub**g**id ainsi que le subg**u**id de notre utilisateur courant : | Pour pouvoir utiliser [[apt>lxc|LXC]] sans [[sudo|sudo]], et donc par conséquent, minimiser le risque qu'un attaquant arrive à avoir accès à votre [[wpfr>Hôte_(informatique)|hôte système]] à cause de l'utilisation de [[sudo|sudo]], nous allons déjà récupérer le sub**g**id ainsi que le subg**u**id de notre utilisateur courant : | ||
<code bash> | <code bash> | ||
- | cat /etc/sub{g,u}id | grep $USER | + | grep -h $USER /etc/sub{g,u}id |
</code> | </code> | ||
Ligne 285: | Ligne 285: | ||
</code> | </code> | ||
- | Vous noterez qu'il y'a ni mot de passe attribué, ni rien, impossible donc de se connecter à notre container **container_unprivileged** ni via la méthode [[ssh|ssh]], ni via la méthode **lxc-console**. Voici un moyen pour attribuer un mot de passe à l'utilisateur **ubuntu**. Nous allons déjà démarrer notre container fraîchement installé : | + | Vous noterez qu'il n'y a ni mot de passe attribué, ni rien, impossible donc de se connecter à notre container **container_unprivileged** ni via la méthode [[ssh|ssh]], ni via la méthode **lxc-console**. Voici un moyen pour attribuer un mot de passe à l'utilisateur **ubuntu**. Nous allons déjà démarrer notre container fraîchement installé : |
<code bash>lxc-start -n container_unprivileged</code> | <code bash>lxc-start -n container_unprivileged</code> | ||
Ligne 366: | Ligne 366: | ||
<code bash>lxc-stop -n container_unprivileged</code> | <code bash>lxc-stop -n container_unprivileged</code> | ||
- | Et ensuite, nous passons à la destruction : | + | Et ensuite, nous passons à la destruction : |
<code bash>lxc-destroy -n container_unprivileged</code> | <code bash>lxc-destroy -n container_unprivileged</code> | ||
Ligne 390: | Ligne 390: | ||
<code bash>sudo -i && cd /home/$USER/.local/lxc/nom_de_votre_container/</code> | <code bash>sudo -i && cd /home/$USER/.local/lxc/nom_de_votre_container/</code> | ||
- | Ensuite, nous utilisons la commande [[tar|tar]] avec son option **--numeric-owner**, qui est ici très importante. Elle va permettre de garder les **uid/gid** intactes lors de l'extraction. Nous utilisons aussi l'outil [[apt>gzip|gzip]] et son option **-9((--best-compression.))**, qui vous offrira, une compression maximale. | + | Ensuite, nous utilisons la commande [[tar|tar]] avec son option **%%--%%numeric-owner**, qui est ici très importante. Elle va permettre de garder les **uid/gid** intactes lors de l'extraction. Nous utilisons aussi l'outil [[apt>gzip|gzip]] et son option **-9((--best-compression.))**, qui vous offrira, une compression maximale. |
<code bash>GZIP=-9 tar --numeric-owner -czvf mon_container.tar.gz ./*</code> | <code bash>GZIP=-9 tar --numeric-owner -czvf mon_container.tar.gz ./*</code> | ||
Ligne 422: | Ligne 422: | ||
<code bash>tar --numeric-owner -xzvf mon_container.tar.gz</code> | <code bash>tar --numeric-owner -xzvf mon_container.tar.gz</code> | ||
- | C'est terminé, il y'a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : | + | C'est terminé, il n'y a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : |
<code bash>systemctl start lxcfs.service lxc-net.service lxc.service && exit</code> | <code bash>systemctl start lxcfs.service lxc-net.service lxc.service && exit</code> | ||
Ligne 432: | Ligne 432: | ||
=== Pour une utilisation unprivileged === | === Pour une utilisation unprivileged === | ||
- | <note tip>Nous aborderons ici, que la restauration de votre backup précédemment créé. | + | <note tip>Nous n'aborderons ici, que la restauration de votre backup précédemment créé. |
Pour la configuration d'un container [[apt>lxc|LXC]] **unprivileged**, merci de suivre le chapitre [[lxc#configuration_de_lxc_pour_une_utilisation_unprivileged|configuration de lxc pour une utilisation unprivileged]]. | Pour la configuration d'un container [[apt>lxc|LXC]] **unprivileged**, merci de suivre le chapitre [[lxc#configuration_de_lxc_pour_une_utilisation_unprivileged|configuration de lxc pour une utilisation unprivileged]]. | ||
</note> | </note> | ||
Ligne 457: | Ligne 457: | ||
<code bash>tar --numeric-owner -xzvf mon_container.tar.gz</code> | <code bash>tar --numeric-owner -xzvf mon_container.tar.gz</code> | ||
- | C'est terminé, il y'a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : | + | C'est terminé, il n'y a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : |
<code bash>sudo systemctl start lxcfs.service lxc-net.service lxc.service</code> | <code bash>sudo systemctl start lxcfs.service lxc-net.service lxc.service</code> |