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 Prochaine révision Les deux révisions suivantes | ||
lxc [Le 12/08/2018, 11:33] beaver |
lxc [Le 31/01/2019, 17:26] 185.165.168.229 non adapté, abandon (beaver) |
||
---|---|---|---|
Ligne 55: | Ligne 55: | ||
<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 65: | ||
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 83: | ||
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 104: | ||
</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 126: | Ligne 126: | ||
<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 167: | Ligne 167: | ||
===== Configuration de LXC pour une utilisation unprivileged ===== | ===== Configuration de LXC pour une utilisation unprivileged ===== | ||
- | 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 **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 | cat /etc/sub{g,u}id | grep $USER | ||
Ligne 180: | Ligne 180: | ||
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 206: | Ligne 206: | ||
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 2 | 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 238: | Ligne 238: | ||
<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 255: | Ligne 263: | ||
<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 271: | Ligne 279: | ||
<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> | ||
Ligne 331: | Ligne 339: | ||
<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 379: | Ligne 387: | ||
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 393: | Ligne 401: | ||
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 423: | ||
C'est terminé, il y'a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : | C'est terminé, il y'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 429: | Ligne 437: | ||
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 458: | ||
C'est terminé, il y'a plus qu'à redémarrer **lxcfs.service**, **lxc-net.service**, **lxc.service** : | C'est terminé, il y'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 469: | Ligne 477: | ||
<code bash>sudo((container unprivileged ou non ?)) lxc-snapshot -n nom_de_mon_container</code> | <code bash>sudo((container unprivileged ou non ?)) lxc-snapshot -n nom_de_mon_container</code> | ||
- | <code bash>beaver@home:~$ sudo lxc-snapshot -n container_xenial | + | <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: 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: 3406 Making a copy-clone. If you do want snapshots, then | ||
Ligne 479: | Ligne 487: | ||
<code bash>sudo((container unprivileged ou non?)) lxc-snapshot -L -n nom_de_mon_container</code> | <code bash>sudo((container unprivileged ou non?)) lxc-snapshot -L -n nom_de_mon_container</code> | ||
- | <code bash>beaver@home:~$ sudo lxc-snapshot -L -n container_xenial | + | <code bash>beaver@mysweethome:~$ sudo lxc-snapshot -L -n container_xenial |
snap0 (/var/lib/lxc/container_xenial/snaps) 2018:07:28 10:25:48 | snap0 (/var/lib/lxc/container_xenial/snaps) 2018:07:28 10:25:48 | ||
</code> | </code> | ||
Ligne 488: | Ligne 496: | ||
---- | ---- | ||
- | |||
- | ===== Création d'une image customisée LXC ===== | ||
- | |||
- | === Prérequis === | ||
- | |||
- | [[:tutoriel:comment_installer_un_paquet|Installez le paquet:]] [[apt>debootstrap|debootstrap]] ou [[apt>cdeboostrap|cdeboostrap]]. | ||
- | |||
- | ---- | ||
- | |||
- | <note> En cours --- //[[:utilisateurs:beaver|beaver]] Le 12/08/2018, 11:18//</note> | ||
- | |||
===== 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]]. |