Lxc host
Sauter à la navigation
Sauter à la recherche
1. Les paquets necessaires:
- lxc
- bridge-utils
- linux-image-2.6-{amd/686}
2. Verification des capacites du noyau:
- lxc-checkconfig
- si ca ne va pas (le noyau grsec chez OVH empeche pas mal de possibilites), on installe le noyau standard (linux-image-2.6...) et on change la configuration de grub (ou lilo) pour que celui ci demarre le bon noyau (cf /etc/default/grub /etc/grub.d/* )
3. montage des cgroups
- ajoutez la ligne suivante au fichier /etc/fstab comme suit:
none /sys/fs/cgroup cgroup defaults 0 0
4. configuration du réseau
- la configuration utilisée ici est:
- un bridge virtuel (br1-nat) qui accede a internet via des regles de NAT sur l'interface externe (eth0 ici)
iptables -A POSTROUTING -s 10.21.3.0/24 ! -d 10.21.3.0/24 ! -o lo -j SNAT --to-source <IP-publique>
- chaque lxc aura au moins une interface ethernet (sous la forme eth-<nom_abrege_du_lxc>) dans le bridge
- si on dispose d'une IP publique réservée pour la machine lxc, on ajoute 2 regles de NAT qui vont mapper l'ensemble
- un bridge virtuel (br1-nat) qui accede a internet via des regles de NAT sur l'interface externe (eth0 ici)
du trafic entre l'IP publique réservée et l'IP privée de la machine lxc.
- on permet a l'hote de router les paquet: (fichier /etc/sysctl.d/local.conf)
# enable ip forwarding net.ipv4.ip_forward=1
5. Fabrication d'une machine de base (cf template lxc-debian-squeeze)
- lxc-create -t <template>
- modification du fichier de configuration:
lxc.network.type=veth ### on s'accroche au bridge br1-nat au demarrage du container lxc.network.link=br1-nat lxc.network.flags=up ### on nomme l'interface histoire de savoir qui est qui (pratique pour faire des capture) lxc.network.veth.pair=eth0-tsqueeze lxc.tty = 4 lxc.pts = 1024 ### Le rootfs a utiliser lxc.rootfs = /var/lib/lxc/test-squeeze/rootfs lxc.cgroup.devices.deny = a # /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm # consoles lxc.cgroup.devices.allow = c 5:1 rwm 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 rwm ### systeme de fichier "kernel" lxc.mount.entry=proc /var/lib/lxc/test-squeeze/rootfs/proc proc nodev,noexec,nosuid 0 0 lxc.mount.entry=devpts /var/lib/lxc/test-squeeze/rootfs/dev/pts devpts defaults 0 0 lxc.mount.entry=sysfs /var/lib/lxc/test-squeeze/rootfs/sys sysfs defaults 0 0 ### Pour la route, un exemple d'un montage partage entre l'hote et l'invite #lxc.mount.entry=/srv/svg /var/lib/lxc/test-squeeze/rootfs/srv/svg none bind 0 0
- lxc-ls doit montrer la machine nouvellement cree
- lxc-start -n <machine> pour la demarrer (a faire de preference dans un screen)
- init 0 dans la machine lxc (invite) pour l'eteindre.