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
lxc [Le 27/07/2018, 17:28]
beaver
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 5: Ligne 5:
 ====== 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 17: Ligne 17:
  
 ===== 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 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 55: Ligne 56:
  
 <code bash>​sudo lxc-ls --fancy</​code>​ <code bash>​sudo lxc-ls --fancy</​code>​
-<code bash>​beaver@home:~$ sudo lxc-ls --fancy+<code bash>​beaver@mysweethome:~$ sudo lxc-ls --fancy
      ​NAME ​        ​STATE ​ AUTOSTART GROUPS IPV4      IPV6       ​NAME ​        ​STATE ​ AUTOSTART GROUPS IPV4      IPV6 
 container_xenial STOPPED ​    ​0 ​      ​- ​  ​10.0.3.58 ​  - container_xenial STOPPED ​    ​0 ​      ​- ​  ​10.0.3.58 ​  -
  
-beaver@home:~$ cat /​etc/​lxc/​default.conf ​+beaver@mysweethome:~$ cat /​etc/​lxc/​default.conf ​
 lxc.network.type = veth lxc.network.type = veth
 lxc.network.link = lxcbr0 lxc.network.link = lxcbr0
Ligne 65: Ligne 66:
 lxc.network.hwaddr = 00:​16:​3e:​xx:​xx:​xx lxc.network.hwaddr = 00:​16:​3e:​xx:​xx:​xx
  
-beaver@home:~$ dpkg -l bridge-utils+beaver@mysweethome:~$ dpkg -l bridge-utils
 Souhait=inconnU/​Installé/​suppRimé/​Purgé/​H=à garder Souhait=inconnU/​Installé/​suppRimé/​Purgé/​H=à garder
 | État=Non/​Installé/​fichier-Config/​dépaqUeté/​échec-conFig/​H=semi-installé/​W=attend-traitement-déclenchements | État=Non/​Installé/​fichier-Config/​dépaqUeté/​échec-conFig/​H=semi-installé/​W=attend-traitement-déclenchements
Ligne 83: Ligne 84:
 On vérifie l'​état de notre container : On vérifie l'​état de notre container :
  
-<code bash>​beaver@home:~$ sudo lxc-ls --fancy+<code bash>​beaver@mysweethome:~$ sudo lxc-ls --fancy
   NAME            STATE  AUTOSTART GROUPS IPV4      IPV6    NAME            STATE  AUTOSTART GROUPS IPV4      IPV6 
 container_xenial RUNNING ​  ​0 ​       -   ​10.0.3.58 ​   -  ​ container_xenial RUNNING ​  ​0 ​       -   ​10.0.3.58 ​   -  ​
Ligne 104: Ligne 105:
 </​code>​ </​code>​
  
-<code bash>​beaver@home:~$ ssh ubuntu@10.0.3.58 ​+<code bash>​beaver@mysweethome:~$ ssh ubuntu@10.0.3.58 ​
 ubuntu@10.0.3.58 password: mot de passe **ubuntu** par défaut. ubuntu@10.0.3.58 password: mot de passe **ubuntu** par défaut.
 Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-130-generic x86_64) Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-130-generic x86_64)
Ligne 118: Ligne 119:
  
 Deux solutions s'​offrent maintenant à nous pour accéder à notre container, nous pouvons utiliser la commande [[ssh|ssh]],​ ou bien, nous pouvons utiliser la commande **lxc-console** : Deux solutions s'​offrent maintenant à nous pour accéder à notre container, nous pouvons utiliser la commande [[ssh|ssh]],​ ou bien, nous pouvons utiliser la commande **lxc-console** :
- 
- 
  
 <code bash>## <code bash>##
Ligne 128: Ligne 127:
  
 <code bash> <code bash>
-beaver@home:~$ sudo lxc-console -n container_xenial +beaver@mysweethome:~$ sudo lxc-console -n container_xenial 
-[sudo] Mot de passe de beaver +[sudo] Mot de passe de beaver ​
 Connected to tty 1 Connected to tty 1
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Ligne 144: Ligne 143:
 ---- ----
  
-<​note>​**__//​Conclusion//​__** : Vous voilà maintenant en possession d'un container LXC **Ubuntu 16.04** ayant pour nom **container_xenial** !.</​note>​+<​note>​**__//​Conclusion//​__** : Vous voilà maintenant en possession d'un container ​[[apt>​lxc|LXC]] **Ubuntu 16.04** ayant pour nom **container_xenial** !.</​note>​
  
-Le chemin absolu de votre container **container_xenial** se trouve dans :+Le [[wpfr>​Chemin_d%27accès|chemin absolu]] de votre container **container_xenial** se trouve dans :
 <code bash>/​var/​lib/​lxc/​container_xenial/​rootfs</​code>​ <code bash>/​var/​lib/​lxc/​container_xenial/​rootfs</​code>​
 La configuration de votre container **container_xenial** se trouve dans : La configuration de votre container **container_xenial** se trouve dans :
Ligne 161: 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 169: Ligne 168:
 ===== Configuration de LXC pour une utilisation unprivileged ===== ===== Configuration de LXC pour une utilisation unprivileged =====
  
-Pour pouvoir utiliser 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 **subgid** ainsi que le **subguid** 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 182: Ligne 181:
 Veillez de garder en tête ces deux lignes, maintenant, nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service** : Veillez de garder en tête ces deux lignes, maintenant, nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service** :
  
-<code bash>​sudo systemctl stop lxc*.service</​code>​+<code bash>​sudo systemctl stop lxcfs.service lxc-net.service ​lxc.service</​code>​
  
 Veuillez maintenant créer dans le [[wpfr>​Fichier_et_répertoire_caché|dossier caché]] **.config/​** un dossier portant le nom **lxc** : Veuillez maintenant créer dans le [[wpfr>​Fichier_et_répertoire_caché|dossier caché]] **.config/​** un dossier portant le nom **lxc** :
Ligne 208: Ligne 207:
 Maintenant, nous [[:​tutoriel:​comment_modifier_un_fichier|modifions]] le fichier **lxc-usernet** dans **/​etc/​lxc**,​ et on y insère ça : Maintenant, nous [[:​tutoriel:​comment_modifier_un_fichier|modifions]] le fichier **lxc-usernet** dans **/​etc/​lxc**,​ et on y insère ça :
  
-<code bash>​nom_de_votre_utilisateur_hôte veth lxcbr0 ​2</​code>​+<code bash>​nom_de_votre_utilisateur_hôte veth lxcbr0 ​10</​code>​
  
 Ou bien dans un [[terminal|terminal]]:​ Ou bien dans un [[terminal|terminal]]:​
  
-<code bash>​echo $USER veth lxcbr0 ​| sudo tee --append /​etc/​lxc/​lxc-usernet</​code>​+<code bash>​echo $USER veth lxcbr0 ​10 | sudo tee --append /​etc/​lxc/​lxc-usernet</​code>​
  
 [[:​tutoriel:​comment_modifier_un_fichier|Créons]] maintenant l'​emplacement où on va recevoir nos containers LXC, et attribuons y les bonnes [[permissions|permissions]] : [[:​tutoriel:​comment_modifier_un_fichier|Créons]] maintenant l'​emplacement où on va recevoir nos containers LXC, et attribuons y les bonnes [[permissions|permissions]] :
Ligne 240: Ligne 239:
  
 <code bash>​chmod a+x /​home/​$USER/</​code>​ <code bash>​chmod a+x /​home/​$USER/</​code>​
 +
 +Ou :
 +
 +FIXME Dans notre exemple, le sub**u**id est **100000**. Veuillez le remplacer par le votre. Pour le récupérer,​ veuillez saisir :<code bash>cat /etc/subuid | grep $USER</​code>​
 +
 +Et :
 +
 +<code bash>cd $HOME && sudo setfacl -m u:100000:x . .local .local/​share</​code>​
  
 À ce stade, il est préférable de redémarrer votre machine pour être certain, que les modifications apportées soient effectives : À ce stade, il est préférable de redémarrer votre machine pour être certain, que les modifications apportées soient effectives :
Ligne 257: Ligne 264:
 <code bash> <code bash>
  
-beaver@home:~$ lxc-create -t download -n container_unprivileged -- -d ubuntu -r xenial -a amd64+beaver@mysweethome:~$ lxc-create -t download -n container_unprivileged -- -d ubuntu -r xenial -a amd64
 Using image from local cache Using image from local cache
 Unpacking the rootfs Unpacking the rootfs
Ligne 273: Ligne 280:
 <code bash>​lxc-ls --fancy</​code>​ <code bash>​lxc-ls --fancy</​code>​
  
-<code bash>​beaver@home:~$ lxc-ls --fancy+<code bash>​beaver@mysweethome:~$ lxc-ls --fancy
 NAME                   ​STATE ​  ​AUTOSTART GROUPS IPV4      IPV6  NAME                   ​STATE ​  ​AUTOSTART GROUPS IPV4      IPV6 
-container_unprivileged STOPPED 0         ​- ​     10.0.3.42 +container_unprivileged STOPPED 0         ​- ​     10.0.3.58 
 </​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'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 296: Ligne 303:
 À ce stade, vous allez pouvoir utiliser la commande **passwd ubuntu** et ainsi, définir le mot de passe que vous voulez à votre utilisateur **ubuntu** ! ;-). À ce stade, vous allez pouvoir utiliser la commande **passwd ubuntu** et ainsi, définir le mot de passe que vous voulez à votre utilisateur **ubuntu** ! ;-).
  
-Le chemin absolu de votre container **container_unprivileged** se trouve dans :+Le [[wpfr>​Chemin_d%27accès|chemin absolu]] de votre container **container_unprivileged** se trouve dans :
 <code bash>/​home/​$USER/​.local/​lxc/​container_unprivileged/​rootfs</​code>​ <code bash>/​home/​$USER/​.local/​lxc/​container_unprivileged/​rootfs</​code>​
  
Ligne 308: Ligne 315:
 <code bash>/​var/​lib/​lxc/​container_name/​config</​code>​ <code bash>/​var/​lib/​lxc/​container_name/​config</​code>​
  
-La configuration de votre LXC **unprivileged** se trouve dans :+La configuration de votre [[apt>​lxc|LXC]] **unprivileged** se trouve dans :
  
 <code bash> <code bash>
Ligne 333: Ligne 340:
  
 <code bash> <code bash>
-beaver@home:~$ lxc-console -n container_unprivileged+beaver@mysweethome:~$ lxc-console -n container_unprivileged
 Connected to tty 1 Connected to tty 1
 Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Ligne 349: Ligne 356:
 ---- ----
  
-<​note>​**__//​Conclusion//​__** : Vous voilà maintenant en possession d'un container LXC **Ubuntu 16.04**, le tout en "​mode"​ **unprivileged**,​ ayant pour nom **container_unprivileged** !. Pour le reste, la syntaxe reste la même, veillez surtout à ne plus utiliser : <code bash>​sudo lxc-trucmuche</​code>​ mais juste : <code bash>​lxc-trucmuche</​code>​.</​note>​+<​note>​**__//​Conclusion//​__** : Vous voilà maintenant en possession d'un container ​[[apt>​lxc|LXC]] **Ubuntu 16.04**, le tout en "​mode"​ **unprivileged**,​ ayant pour nom **container_unprivileged** !. Pour le reste, la syntaxe reste la même, veillez surtout à ne plus utiliser : <code bash>​sudo lxc-trucmuche</​code>​ mais juste : <code bash>​lxc-trucmuche</​code>​.</​note>​
  
  
Ligne 359: 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 371: Ligne 378:
 Il est relativement aisé, de backup un container LXC, pour se faire, veuillez ouvrir un [[:​terminal|terminal]]. ​ Il est relativement aisé, de backup un container LXC, pour se faire, veuillez ouvrir un [[:​terminal|terminal]]. ​
  
-Ensuite nous devons déjà stopper notre container LXC :+Ensuite nous devons déjà stopper notre container ​[[apt>​lxc|LXC]] :
  
 <code bash>​sudo((Container unprivileged ou non ?)) lxc-stop -n nom_de_mon_container</​code>​ <code bash>​sudo((Container unprivileged ou non ?)) lxc-stop -n nom_de_mon_container</​code>​
Ligne 381: Ligne 388:
 Ou bien : Ou bien :
  
-<code bash>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>export ​GZIP=-9 tar --numeric-owner -czvf mon_container.tar.gz ./​*</​code>​+<code bash>​GZIP=-9 tar --numeric-owner -czvf mon_container.tar.gz ./​*</​code>​
  
 Vous voilà maintenant en possession d'un backup de votre container, passons maintenant à sa restauration. Vous voilà maintenant en possession d'un backup de votre container, passons maintenant à sa restauration.
Ligne 395: Ligne 402:
 Nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service**. Pour se faire, veuillez ouvrir un [[:​terminal|terminal]],​ avec pour contenu : Nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service**. Pour se faire, veuillez ouvrir un [[:​terminal|terminal]],​ avec pour contenu :
  
-<code bash>​sudo -i && systemctl stop lxc*.service</​code>​+<code bash>​sudo -i && systemctl stop lxcfs.service lxc-net.service ​lxc.service</​code>​
  
 Il vous faudra ensuite [[:​tutoriel:​comment_modifier_un_fichier|créer un dossier]] portant le nom de votre container. ​ Il vous faudra ensuite [[:​tutoriel:​comment_modifier_un_fichier|créer un dossier]] portant le nom de votre container. ​
Ligne 415: 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'a plus qu'à redémarrer **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service** :
  
-<code bash>​systemctl start lxc*.service && exit</​code>​+<code bash>​systemctl start lxcfs.service lxc-net.service ​lxc.service && exit</​code>​
  
 Et démarrer ensuite votre container : Et démarrer ensuite votre container :
Ligne 425: 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 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>​
  
 Nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service**. Pour se faire, veuillez ouvrir un [[:​terminal|terminal]],​ avec pour contenu : Nous allons devoir stopper les services **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service**. Pour se faire, veuillez ouvrir un [[:​terminal|terminal]],​ avec pour contenu :
  
-<code bash>​sudo systemctl stop lxc*.service</​code>​+<code bash>​sudo systemctl stop lxcfs.service lxc-net.service ​lxc.service</​code>​
  
 [[:​tutoriel:​comment_modifier_un_fichier|Créons]] maintenant l'​emplacement où on va recevoir notre container LXC, et attribuons y les bonnes [[permissions|permissions]] : [[:​tutoriel:​comment_modifier_un_fichier|Créons]] maintenant l'​emplacement où on va recevoir notre container LXC, et attribuons y les bonnes [[permissions|permissions]] :
Ligne 450: 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'a plus qu'à redémarrer **lxcfs.service**,​ **lxc-net.service**,​ **lxc.service** :
  
-<code bash>​sudo systemctl start lxc*.service</​code>​+<code bash>​sudo systemctl start lxcfs.service lxc-net.service ​lxc.service</​code>​
  
 Et démarrer ensuite votre container : Et démarrer ensuite votre container :
Ligne 461: Ligne 468:
 ==== Méthode lxc-snapshot ==== ==== Méthode lxc-snapshot ====
  
-<note>En cours de rédaction.--- //[[:utilisateurs:​beaver|beaver]] Le 27/07/2018, 12:08//</note>+Il existe un outil dédié à [[apt>lxc|LXC]] pour backup votre container, il se prénomme [[apt>​lxc-snapshot|lxc-snapshot]]. 
 + 
 +Il faut tout d'​abord,​ éteindre notre container : 
 + 
 +<code bash>​sudo((container unprivileged ou non ?)) lxc-stop -n nom_de_mon_container<​/code> 
 + 
 +Ensuite nous utilisons ​[[apt>​lxc-snapshot|lxc-snapshot]] ​: 
 + 
 +<code bash>​sudo((container unprivileged ou non ?)) lxc-snapshot -n nom_de_mon_container</​code>​ 
 + 
 +<code bash>beaver@mysweethome:​~$ sudo lxc-snapshot -n container_xenial 
 +lxc-snapshot:​ lxccontainer.c:​ do_lxcapi_snapshot:​ 3405 Snapshot of directory-backed container requested. 
 +lxc-snapshot:​ lxccontainer.c:​ do_lxcapi_snapshot:​ 3406 Making a copy-clone. ​ If you do want snapshots, then 
 +lxc-snapshot:​ lxccontainer.c:​ do_lxcapi_snapshot:​ 3407 please create an aufs or overlayfs clone first, snapshot that 
 +lxc-snapshot:​ lxccontainer.c:​ do_lxcapi_snapshot:​ 3408 and keep the original container pristine. 
 +</​code>​ 
 + 
 +Pour connaitre le [[wpfr>​Chemin_d%27accès|chemin absolu]] de votre snapshot, vous utiliserez : 
 + 
 +<code bash>​sudo((container unprivileged ou non?)) lxc-snapshot -L -n nom_de_mon_container<​/code> 
 +<code bash>​beaver@mysweethome:​~$ sudo lxc-snapshot -L -n container_xenial 
 +snap0 (/var/​lib/​lxc/​container_xenial/​snaps) ​2018:07:28 10:25:48 
 +</code> 
 + 
 +Pour restaurer un container depuis votre snapshot vous utiliserez : 
 + 
 +<code bash>​sudo((container unprivileged ou non?)) lxc-snapshot -r snapX -n nom_de_mon_container</code>
  
 ---- ----
  
 ===== Voir aussi ===== ===== Voir aussi =====
-  * [[https://​www.youtube.com/​watch?​v=caXHwYC3tq8|3 premières minutes de cette vidéo explique ce qu'​est ​lxc]] +  * [[https://​www.youtube.com/​watch?​v=caXHwYC3tq8|3 premières minutes de cette vidéo explique ce qu'​est ​LXC]] 
-  * [[:LXD]] pour gérer les containers[[:Docker]] décrit dans la vidéo citée précédemment n'​utilise plus lxc+  * https://wiki.debian.org/​LXC 
 +  * https://wiki.debian.org/​EvgeniGolov/​LXC 
 +  * https://​askubuntu.com/​questions/​340055/​lxc-container-no-outgoing-traffic 
 +  * https://​lxc-webpanel.github.io/​
  
 ---- ----
  
 Contributeur(s):​ [[:​utilisateurs:​beaver|BeAvEr]]. Contributeur(s):​ [[:​utilisateurs:​beaver|BeAvEr]].
  • lxc.1532705334.txt.gz
  • Dernière modification: Le 27/07/2018, 17:28
  • par beaver