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 [23/12/2015 11:46] captnfab [TP associés] |
doc:autres:vm:lxc [29/10/2016 14:04] 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 !)) | ||
- | |||
- | **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
- | |||
- | |||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 20: | 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: |
- | + | ||
- | D'autres paquets sont recommandés, et notamment //debootstrap// qui permettra d'installer un autre système Debian : | + | |
<code root>apt-get install bridge-utils libvirt-bin debootstrap</code> | <code root>apt-get install bridge-utils libvirt-bin debootstrap</code> | ||
- | ===== Utilisation ===== | + | ===== Notes sur les anciennes versions de debian ===== |
+ | |||
+ | ==== Ancienne version de debian ==== | ||
+ | |||
+ | <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 78: | Ligne 77: | ||
- | ==== 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 103: | 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 146: | 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 159: | Ligne 159: | ||
==== Afficher la liste des conteneurs ==== | ==== Afficher la liste des conteneurs ==== | ||
- | <code root>lxc-ls</code> | + | <code root>lxc-ls -f</code> |
<code config retour de la commande>myfirstcontainer | <code config retour de la commande>myfirstcontainer | ||
monsecondconteneur | monsecondconteneur |