İçinde imtiyazsız lxckonteyner kullanıyorum Arch Linux. Temel sistem bilgileri aşağıdadır:
[chb@conventiont ~]$ uname -a
Linux conventiont 3.17.4-Chb #1 SMP PREEMPT Fri Nov 28 12:39:54 UTC 2014 x86_64 GNU/Linux
Özel / derlenmiş bir çekirdek user namespace enabled:
[chb@conventiont ~]$ lxc-checkconfig
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled
Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
[chb@conventiont ~]$ systemctl --version
systemd 217
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
Ne yazık ki, şu anda systemdiyi oynamıyor lxc. Özellikle cgroupsroot olmayan bir kullanıcı için kurulum iyi çalışmıyor gibi görünüyor veya bunu nasıl yapacağımı çok bilmiyorum. lxcbir kapsayıcıyı yalnızca gerekli grupları oluşturabildiği zaman ayrıcalıksız modda başlatır /sys/fs/cgroup/XXX/*. Ancak bu mümkün değildir lxc, çünkü systemdbağlar rootiçinde CGroup hiyerarşisi /sys/fs/cgroup/*. Bir çözüm aşağıdakileri yapmak gibi görünüyor:
for d in /sys/fs/cgroup/*; do
f=$(basename $d)
echo "looking at $f"
if [ "$f" = "cpuset" ]; then
echo 1 | sudo tee -a $d/cgroup.clone_children;
elif [ "$f" = "memory" ]; then
echo 1 | sudo tee -a $d/memory.use_hierarchy;
fi
sudo mkdir -p $d/$USER
sudo chown -R $USER $d/$USER
echo $$ > $d/$USER/tasks
done
Bu kod karşılık gelen cgroupcgroup ayrıcalıksız bir kullanıcı için hiyerarşide dizinleri . Ancak anlamadığım bir şey oluyor. Yukarıda belirtilenleri uygulamadan önce şunu göreceğim:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpu,cpuacct:/
2:cpuset:/
1:name=systemd:/user.slice/user-1000.slice/session-c1.scope
Yukarıda adı geçen kodu yürüttükten sonra kabuğunda gördüm:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/chb
7:net_cls:/chb
6:freezer:/chb
5:devices:/chb
4:memory:/chb
3:cpu,cpuacct:/chb
2:cpuset:/chb
1:name=systemd:/chb
Ama başka bir kabukta hala görüyorum:
[chb@conventiont ~]$ cat /proc/self/cgroup
8:blkio:/
7:net_cls:/
6:freezer:/
5:devices:/
4:memory:/
3:cpu,cpuacct:/
2:cpuset:/
1:name=systemd:/user.slice/user-1000.slice/session-c1.scope
Böylece ayrıcalığımı başlatabilirim lxc yukarıda belirtilen kodu ama başka herhangi bir değil kabuk kapsayıcı .
Birisi bu davranışı açıklayabilir mi?
Birisi ( )
cgroupsgeçerli bir sürümü ile gerekli kurmak için daha iyi bir yol buldu mu?systemd>= 217