Un saludo a la lista. He estado este fin de semana curioseando lxc sobre jessie; y he llegado al problema de los contenedores de usuario (los unprivileged containers, vamos).
Después de dar vueltas y vueltas por internet acabé por pergeñar una solución, pero no me acaba de funcionar, no sé muy bien por qué. La idea es usar /etc/cgconfig.conf y /etc/cgrules.conf, de manera que al arrancar se cree un cgroup de usuario llamado "lxc" en el que pueden escribir los usuarios que pertenecen al grupo "lxc". Para ello he creado este /etc/cgconfig.conf: #v+ group lxc { perm { admin { uid = root; gid = lxc; dperm = 775; fperm = 664; } task { uid = root; gid = lxc; fperm = 664; } } memory { memory.limit_in_bytes = 512m; } cpu {} blkio {} freezer {} cpuacct {} cpuset { cgroup.clone_children = 1; cpuset.cpus = 0; cpuset.mems = 0; } devices {} net_cls {} net_prio {} perf_event {} } #v- Y en /etc/cgrules.conf he puesto esto: #v+ @lxc:lxc-start * lxc/%u @lxc:sleep * lxc/%u #v- La segunda línea sólo está a efectos de prueba y, en realidad, sobraría. O sea, cuando un usuario del grupo "lxc" arranca lxc-start el proceso va al cgroup lxc/nombre_de_usuario. Este cgroup lo creo cuando el usuario arranca una sesión de bash (he creado un /etc/profile.d/create_user_lxc.sh para ello). En teoría debería funcionar y dejarme crear sin problema los contenedores ya que estos se crearían dentro de lxc/nombre_de_usuario en donde no hay problemas de permisos. Pero sucede una cosa muy curiosa con lxc-start. Si uso "sleep", la cosa va bien: #v+ $ sleep 30 & [1] 1124 $ cat /sys/fs/cgroup/memory/lxc/perico/tasks 1124 $ sleep 20 & [2] 1126 $ cat /sys/fs/cgroup/memory/lxc/perico/tasks 1124 1126 $ sleep 10 & [3] 1128 $ cat /sys/fs/cgroup/memory/lxc/poerico/tasks 1124 1126 1128 #v- O sea todos los procesos "sleep" van a "lxc/perico". Sin embargo, con lxc-start ocurre que la primera vez funciona como espero: #v+ $ lxc-start -n wheezy -d $ cat /sys/fs/cgroup/memory/lxc/perico/tasks 1139 $ ps -C lxc-start PID TTY TIME CMD 1139 ? 00:00:00 lxc-start #v- Pero a partir de ese momento, deja de funcionarme eso de que todos los procesos "sleep" y "lxc-start" vayan al cgroup "lxc/perico": #v+ $ sleep 20 & [3] 2400 pantuflo@zipi:~$ cat /sys/fs/cgroup/memory/lxc/pantuflo/tasks 1139 $ grep 2400 /sys/fs/cgroup/memory/tasks 2400 #v- O sea, el sleep va al cgroup raiz. Este y todos los que lance a partir de ahora. Un lxc-start falla y si miro por qué, me dice que porque no puede crear el cgroup para el contenedor. Imagino que le pasará lo mismo que a sleep: que el proceso va al cgroup raiz y ahí el usuario no puedo crear ningún cgroup hijo. Si la regla en cgrules.conf hago que sea: @lxc * lxc/%u La cosa funciona, pero yo lo único que quiero en cgroup aparte son las máquinas lxc, no el resto de procesos que pueda crear el usuario. ¿A alguien alcanza a saber qué pasa? Muchas gracias. -- La virtud, como el arte, hallarse suele cerca de lo difícil [...] --- Lope de Vega --- -- To UNSUBSCRIBE, email to debian-user-spanish-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/20141214193438.ga24...@cubo.casa