Lxc

De MySoLo Wiki.

Sommaire

Info en vrac concernant LXC ( Linux Containers )

Sécurité

Droits sur les devices

Les cgroups permettent, en autre, de définir les accès aux devices par "process/class de process" (a revoir). lxc les utilisent directement en définissant les droits dans le fichiers de configuration du container.

Attention, cela ne créer pas les devices dans /dev du container mais permet d'interdire ou autoriser l'accès aux devices.

La syntax ressemble à celle utilisée par mknod.


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:2 rwm
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
# rtc
lxc.cgroup.devices.allow = c 256:0 rwm


Réseau

Les interfaces réseau sont créé directement par lxc pour le conteneur. Sur le hote, sont créé automatiquement, si il y a une nécessité, ( voir Différentes interfaces ), les interfaces virtuel servant a effectuer le pont entre le conteneur et le réseau.

Différentes interfaces

empty

Permet de créer uniquement l'interface loopback

lxc.network.type = empty

veth

#lxc.network.type = veth
#lxc.network.veth.pair = veth0

vlan

A priori. Il n'est pas possible de relier plusieurs conteneur sur le même vlan. Il ne peut pas y avoir le même vlan sur des interfaces physique différentes. De même, je n'ai pas réussi à lancer un conteneur avec lxc.network.link = br0 ou autre interface que l'interface physique eth0.

En plus, je ne sais pas si c'est un bug, mais je n'ai pas d'interface vlan de crée et visible. Mais un ip link add link eth0 type vlan 100 ne fonctionne pas en indiquant que le vlan existe déjà.

lxc.network.type = vlan
lxc.network.vlan.id = 100
lxc.network.link = eth0

macvlan

lxc.network.link = br0
#lxc.network.link = dummy0
#lxc.network.link = eth0
lxc.network.hwaddr = 4a:59:43:49:79:bf
 
# ip local du conteneur
lxc.network.ipv4 = 192.168.100.100

Configuration de base

lxc.utsname = gentoo_tpl_dev
 
lxc.tty = 2
lxc.pts = 1024
 
#lxc.network.type = empty
 
#lxc.network.type = vlan
#lxc.network.vlan.id = 100
 
lxc.network.type = veth
lxc.network.veth.pair = veth0
 
#lxc.network.link = br0
#lxc.network.link = dummy0
#lxc.network.link = eth0
#lxc.network.hwaddr = 4a:59:43:49:79:bf 
 
# ip local du conteneur
lxc.network.ipv4 = 192.168.100.100
 
lxc.network.flags = up
 
 
lxc.rootfs = /home/vps/tpl_gentoo/gentoo_tpl_dev/rootfs
#lxc.mount =  /home/vps/tpl_gentoo/gentoo_tpl_dev/fstab
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:2 rwm
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
# rtc
lxc.cgroup.devices.allow = c 256:0 rwm
développement