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 [03/10/2015 12:03] paskal [Introduction] |
doc:autres:vm:lxc [29/10/2016 14:10] greenmerlin [Création de votre premier conteneur] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== LXC ou la virtualisation allégée ======= | ====== LXC ou la virtualisation allégée ======= | ||
- | * Objet : Créer des environnements cloisonnés avec LXC sous Debian Wheezy | + | * Objet : Créer des environnements cloisonnés avec LXC sous Debian jessie |
* Niveau requis :{{tag>avisé}} | * Niveau requis :{{tag>avisé}} | ||
* Commentaires : //Entre machine virtuelle et chroot, votre cœur balance : choisissez LXC (Linux Containers) // | * Commentaires : //Entre machine virtuelle et chroot, votre cœur balance : choisissez LXC (Linux Containers) // | ||
* Suivi : | * Suivi : | ||
* Création par [[user>bendia ]] le 22/02/2014 | * Création par [[user>bendia ]] le 22/02/2014 | ||
+ | * Mis à jour par [[user>greenmerlin ]] le 29/10/2016 | ||
* Testé par [[user>bendia]] le 21/02/2014 | * Testé par [[user>bendia]] le 21/02/2014 | ||
* Testé par [[user>paskal]] le 01/03/2014 | * Testé par [[user>paskal]] le 01/03/2014 | ||
* Commentaires sur le forum : [[https://debian-facile.org/topic-8502-wiki-lxc-page-1.html#p82729 | 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/topic-8502-wiki-lxc-page-1.html#p82729 | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | |||
- | |||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 18: | Ligne 17: | ||
Cette situation est en cours d'évolution avec 3.12/lxc-beta2 : [[https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/ | https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/]]</note> | Cette situation est en cours d'évolution avec 3.12/lxc-beta2 : [[https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/ | https://www.stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/]]</note> | ||
- | ===== Installation ===== | + | ===== Installation des paquets nécessaire ===== |
Installer le paquet lxc qui contient les outils permettant de créer, lancer, supprimer des conteneurs LXC | Installer le paquet lxc qui contient les outils permettant de créer, lancer, supprimer des conteneurs LXC | ||
<code root>apt-get install lxc</code> | <code root>apt-get install lxc</code> | ||
- | Lors de l'installation, vous devez indiquer l'emplacement où seront installés vos conteneur, ///var/lib/lxc// par défaut (FIXME Y-a-t-il des précautions pour installer sur une autre partition par exemple ?) | + | D'autres paquets sont recommandés, et notamment //debootstrap// qui permettra d'installer un autre système Debian, bridge-utils quand a lui vous permettra de créer des interfaces de type "pont" permettant a votre conteneur de communiquer avec l'extérieur: |
+ | <code root>apt-get install bridge-utils libvirt-bin debootstrap</code> | ||
- | D'autres paquets sont recommandés, et notamment //debootstrap// qui permettra d'installer un autre système Debian : | + | ===== Notes sur les anciennes versions de debian ===== |
- | <code root>apt-get install bridge-utils libvirt-bin debootstrap</code> | + | |
+ | ==== Ancienne version de debian ==== | ||
- | ===== Utilisation ===== | + | <note important>Si vous utilisez la version stable de debian (la jessie à l'heure ou j'écrit ses lignes) vous pouvez directement vous rendre au paragraphe suivant</note> |
- | ==== Préparer le système hôte ==== | + | [[https://debian-facile.org/doc:autres:vm:lxc#creation-de-votre-premier-conteneur|ICI]] |
=== /etc/fstab === | === /etc/fstab === | ||
Ligne 46: | Ligne 47: | ||
<code root>lxc-checkconfig</code> | <code root>lxc-checkconfig</code> | ||
- | <code>Kernel config /proc/config.gz not found, looking in other places... | + | <code config retour de la commande>Kernel config /proc/config.gz not found, looking in other places... |
Found kernel config file /boot/config-3.2.0-4-amd64 | Found kernel config file /boot/config-3.2.0-4-amd64 | ||
--- Namespaces --- | --- Namespaces --- | ||
Ligne 73: | Ligne 74: | ||
Note : Before booting a new kernel, you can check its configuration | Note : Before booting a new kernel, you can check its configuration | ||
- | usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig | + | usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig</code> |
- | </code> | + | |
- | ==== Création de RootFS ==== | + | ===== Création de votre premier conteneur ===== |
LXC vient avec des //Templates//, c'est à dire des scripts permettant l'installation simple d'un système. \\ | LXC vient avec des //Templates//, c'est à dire des scripts permettant l'installation simple d'un système. \\ | ||
Il en existe pour Debian, Archlinux, Fedora, OpenSuse et Ubuntu. | Il en existe pour Debian, Archlinux, Fedora, OpenSuse et Ubuntu. | ||
- | Créons par exemple un système, tiens au hasard, **Debian** :-D | + | Créons par exemple un système, tiens au hasard, **Une Debian** :-D |
<code root>lxc-create -n myfirstcontainer -t debian</code> | <code root>lxc-create -n myfirstcontainer -t debian</code> | ||
+ | <note important>le -n définit le nom de votre conteneur</note> | ||
Cela va nous installer une Debian Stable super minimale dans la même architecture que le système hôte (i386, AMD64 ...) dans ///var/lib/lxc/myfirstcontainer/rootfs// et un fichier de configuration ///var/lib/lxc/myfirstcontayner/config//. | Cela va nous installer une Debian Stable super minimale dans la même architecture que le système hôte (i386, AMD64 ...) dans ///var/lib/lxc/myfirstcontainer/rootfs// et un fichier de configuration ///var/lib/lxc/myfirstcontayner/config//. | ||
Ligne 101: | Ligne 103: | ||
Un fichier par défaut est créé lors de la création du conteneur, par exemple : | Un fichier par défaut est créé lors de la création du conteneur, par exemple : | ||
<file bash /var/lib/lxc/myfirstcontainer/config> | <file bash /var/lib/lxc/myfirstcontainer/config> | ||
- | lxc.rootfs = /var/lib/lxc/myfirstcontainer/rootfs | + | # Template used to create this container: /usr/share/lxc/templates/lxc-debian |
- | lxc.tty = 4 | + | # Parameters passed to the template: -r jessie |
- | lxc.pts = 1024 | + | # For additional config options, please look at lxc.container.conf(5) |
- | lxc.arch = amd64 | + | lxc.network.type = none |
- | lxc.utsname = myfirstcontainer | + | |
- | lxc.cap.drop = sys_module mac_admin mac_override sys_time | + | |
- | # When using LXC with apparmor, uncomment the next line to run unconfined: | + | lxc.rootfs = /var/lib/lxc/proxies/rootfs |
- | #lxc.aa_profile = unconfined | + | lxc.start.auto = 1 |
+ | # Common configuration | ||
+ | lxc.include = /usr/share/lxc/config/debian.common.conf | ||
- | lxc.cgroup.devices.deny = a | + | # Container specific configuration |
- | # /dev/null and zero | + | lxc.mount = /var/lib/lxc/proxies/fstab |
- | lxc.cgroup.devices.allow = c 1:3 rwm | + | lxc.utsname = proxies |
- | lxc.cgroup.devices.allow = c 1:5 rwm | + | lxc.arch = i386 |
- | # consoles | + | lxc.autodev = 1 |
- | lxc.cgroup.devices.allow = c 5:1 rwm | + | lxc.kmsg = 0 |
- | lxc.cgroup.devices.allow = c 5:0 rwm | + | |
- | lxc.cgroup.devices.allow = c 4:0 rwm | + | |
- | lxc.cgroup.devices.allow = c 4:1 rwm | + | |
- | # /dev/{,u}random | + | |
- | lxc.cgroup.devices.allow = c 1:9 rwm | + | |
- | lxc.cgroup.devices.allow = c 1:8 rwm | + | |
- | lxc.cgroup.devices.allow = c 136:* rwm | + | |
- | lxc.cgroup.devices.allow = c 5:2 rwm | + | |
- | # rtc | + | |
- | lxc.cgroup.devices.allow = c 254:0 rm | + | |
- | + | ||
- | # mounts point | + | |
- | lxc.mount.entry = proc proc proc nodev,noexec,nosuid 0 0 | + | |
- | lxc.mount.entry = sysfs sys sysfs defaults 0 0 | + | |
</file> | </file> | ||
Ce fichier est à adapter suivant les besoins. | Ce fichier est à adapter suivant les besoins. | ||
- | ==== Lancer le conteneur ==== | + | ==== Démarrer votre conteneur ==== |
<code root>lxc-start -n myfirstcontainer -d</code> | <code root>lxc-start -n myfirstcontainer -d</code> | ||
Ligne 144: | Ligne 132: | ||
Utilisez lxc-start au premier plan seulement dans un but de debuggage.</note> | Utilisez lxc-start au premier plan seulement dans un but de debuggage.</note> | ||
- | Pour un démarrage automatique : | + | === Démarrage automatique de votre conteneur (au boot de votre bécanne)=== |
- | <code root>ln -s /var/lib/lxc/mycontainer/config /etc/lxc/auto/mycontainer</code> | + | |
+ | Simple comme Debian | ||
+ | <code root>systemctl enable lxc</code> | ||
+ | |||
+ | ensuite éditez le fichier /var/lib/lxc/$containername/config | ||
+ | <file config /var/lib/lxc/proxies/config> | ||
+ | lxc.start.auto = 1 | ||
+ | </file> | ||
+ | puis on vérifie par un | ||
+ | <code root>lxc-ls --f</code> | ||
+ | qui vous renvois ça | ||
+ | <code>NAME STATE IPV4 IPV6 AUTOSTART | ||
+ | --------------------------------------- | ||
+ | myfirstcontainer STOPPED - - YES | ||
+ | </code> | ||
==== Arrêter le conteneur ==== | ==== Arrêter le conteneur ==== | ||
Ligne 155: | Ligne 157: | ||
<code root>lxc-halt -n myfirstcontainer</code> | <code root>lxc-halt -n myfirstcontainer</code> | ||
- | ==== Afficher la liste des conteneurs ==== | + | ==== Afficher la liste des conteneurs et leurs etats ==== |
- | <code root>lxc-ls</code> | + | <code root>lxc-ls -f</code> |
- | <code>myfirstcontainer | + | |
- | monsecondconteneur | + | |
- | unautreconteneur | + | |
- | </code> | + | |
==== Mettre en pause un conteneur ==== | ==== Mettre en pause un conteneur ==== | ||
Ligne 178: | Ligne 176: | ||
<code root>lxc-info -n myfirstcontainer</code> | <code root>lxc-info -n myfirstcontainer</code> | ||
- | <code>state: RUNNING | + | <code config retour de la commande>state: RUNNING |
pid: 19879</code> | pid: 19879</code> | ||
- | |||
- | ==== Lister les conteneurs et leur état ==== | ||
- | |||
- | <code root>lxc-list</code> | ||
- | <code>RUNNING | ||
- | myfirstcontainer | ||
- | |||
- | FROZEN | ||
- | unautreconteneur | ||
- | |||
- | STOPPED | ||
- | monsecondconteneur | ||
- | </code> | ||
==== Se connecter au conteneur ==== | ==== Se connecter au conteneur ==== | ||
Ligne 199: | Ligne 184: | ||
Le login/mot de passe est //root/root// [[doc:systeme:passwd|à changer à la première connexion]] :-) | Le login/mot de passe est //root/root// [[doc:systeme:passwd|à changer à la première connexion]] :-) | ||
- | <code>Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself | + | <code config séquence interactive>Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself |
- | Debian GNU/Linux 7 myfirstcontainer tty1 | + | Debian GNU/Linux 8 myfirstcontainer tty1 |
myfirstcontainer login: root | myfirstcontainer login: root | ||
Mot de passe : | Mot de passe : | ||
- | Dernière connexion : dimanche 2 mars 2014 à 16:45:20 CET sur tty1 | + | Dernière connexion : dimanche 29 novembre 2016 à 16:45:20 CET sur tty1 |
- | Linux myfirstcontainer 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 | + | Linux proxies 3.16.0-4-586 #1 Debian 3.16.36-1+deb8u2 (2016-10-19) i686 |
The programs included with the Debian GNU/Linux system are free software; | The programs included with the Debian GNU/Linux system are free software; | ||
Ligne 215: | Ligne 200: | ||
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent | ||
permitted by applicable law. | permitted by applicable law. | ||
- | root@myfirstcontainer:~# df -h | ||
- | Sys. fich. Taille Util. Dispo Uti% Monté sur | ||
- | tmpfs 372M 20K 372M 1% /run | ||
- | tmpfs 5,0M 0 5,0M 0% /run/lock | ||
- | tmpfs 1,5G 0 1,5G 0% /run/shm | ||
- | rootfs 7,7G 6,5G 865M 89% / | ||
- | root@myfirstcontainer:~# ifconfig eth0 | ||
- | eth0 Link encap:Ethernet HWaddr 00:ff:12:34:56:79 | ||
- | inet adr:192.168.1.57 Bcast:192.168.1.255 Masque:255.255.255.0 | ||
- | adr inet6: fe80::2ff:12ff:fe34:5679/64 Scope:Lien</code> | ||
==== Quitter le conteneur ==== | ==== Quitter le conteneur ==== | ||
Ligne 232: | Ligne 207: | ||
===== TP associés ===== | ===== TP associés ===== | ||
- | *[[atelier:chantier:lxc-config-reseau|TP : Configurer des conteneurs LXC en mode Bridge]] | + | *[[doc:autres:vm:lxc:reseau-bridge|TP : Configurer des conteneurs LXC en mode Bridge]] |
+ | *[[doc:autres:vm:lxc:mode-utilisateur|TP : Utilisation de LXC en mode utilisateur non-privilégié]] | ||
===== Liens ===== | ===== Liens ===== | ||