Canonical ΠΎΠ±ΡΠ°Π²ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π°Π»Π°ΡΠ½ΠΈΠΊΠΎΡ Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ LXC 5.0, ΠΊΠΎΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΡΠ°Π΅ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ ΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠΎ ΡΠ΅Π»ΠΎΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠ° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°, Π±Π»ΠΈΡΠΊΡ Π΄ΠΎ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ Π·Π° Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ Π·Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ (OCI). LXC Π΅ ΠΊΠΎΠΌΠΏΠ»Π΅Ρ Π°Π»Π°ΡΠΊΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ. ΠΠ° ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π΅Π½ΠΈ Π²ΠΎ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΡΠ΅ΡΠ²Π΅ΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΎΡ LXD ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° LXC. Π€ΠΈΠ»ΠΈΡΠ°Π»Π°ΡΠ° LXC 5.0 Π΅ ΠΊΠ»Π°ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΠ»Π³ΠΎΡΠΎΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°, Π°ΠΆΡΡΠΈΡΠ°ΡΠ°ΡΠ° Π·Π° ΠΊΠΎΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΠ΄ 5 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΠΎΠ΄ΠΎΡ LXC Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ C ΠΈ Π΅ Π»ΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ ΡΠΏΠΎΡΠ΅Π΄ GPLv2.
LXC ΡΠ° Π²ΠΊΠ»ΡΡΡΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° liblxc, Π·Π±ΠΈΡ Π½Π° Π°Π»Π°ΡΠΊΠΈ (lxc-create, lxc-start, lxc-stop, lxc-ls, ΠΈΡΠ½.), ΡΠ°Π±Π»ΠΎΠ½ΠΈ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΈ ΠΈ Π·Π±ΠΈΡ Π½Π° Π²ΡΡΠΊΠΈ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ°Π·ΠΈΡΠΈ. ΠΠ·ΠΎΠ»Π°ΡΠΈΡΠ°ΡΠ° ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ Π½Π° ΠΠΈΠ½ΡΠΊΡ. ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π°Ρ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΠΌΠ°Π³Π°ΡΠΈΠ½ΠΎΡ Π½Π° IPC ΠΌΡΠ΅ΠΆΠ°ΡΠ°, uts, ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΠΈ ΡΠΎΡΠΊΠΈΡΠ΅ Π·Π° ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠ΅, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π·Π° ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ. cΠ³ΡΡΠΏΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅. ΠΠ° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»Π°Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΎΡ, ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΠ΅ΡΠ½Π΅Π»ΠΎΡ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π½Π° Apparmor ΠΈ SELinux, ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Seccomp, Chroots (pivot_root) ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅.
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- Π‘Π΅ ΠΏΡΠ΅ΡΡΠ»ΠΈΠ²ΠΌΠ΅ ΠΎΠ΄ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π°Π»Π°ΡΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π·Π° Π³ΡΠ°Π΄Π΅ΡΠ΅ Meson, ΠΊΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ΠΈ GTK.
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΡΠ΅ Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° cgroup - lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot ΠΈ lxc.cgroup.dir.container.inner, ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Π°Ρ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ cgroup ΠΏΠ°ΡΠ΅ΠΊΠΈ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅Ρ, ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΈ Π²Π³Π½Π΅Π·Π΄Π΅Π½ΠΈ Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ Π½Π° cΠ³ΡΡΠΏΠΈ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΠΈ ΡΠΎ ΠΈΠΌΠΈΡΠ° Π·Π° Π²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΡΠ΅Π±Π½Π° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΎΡ ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ Π²ΠΈ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π²Π°ΡΠ΅ΡΠΎ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ, ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΎΡΠΎ. ΠΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ΅ ΠΎΠΏΡΠΈΠΈΡΠ΅ lxc.time.offset.boot ΠΈ lxc.time.offset.monotonic, ΠΊΠΎΠΈ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°Π°Ρ Π΄Π° Π³ΠΎ ΠΎΠ΄ΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π·Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠΎΡ Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΡΠ°ΡΠΎΠ²Π½ΠΈΠΊ.
- ΠΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π·Π° VLAN Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π·Π° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ Π΅ΡΠ΅ΡΠ½Π΅Ρ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ (Veth). Π‘Π΅ Π½ΡΠ΄Π°Ρ ΠΎΠΏΡΠΈΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ VLAN: veth.vlan.id Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ VLAN ΠΈ veth.vlan.tagged.id Π·Π° ΠΏΠΎΠ²ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈ VLAN-ΠΎΠ²ΠΈ.
- ΠΠ° Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡΠ΅ Π΅ΡΠ΅ΡΠ½Π΅Ρ Π°Π΄Π°ΠΏΡΠ΅ΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°ΡΠ° Π½Π° ΡΠ΅Π΄ΠΈΡΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠΌΠ°ΡΠ΅ ΠΈ ΠΏΡΠ΅Π½ΠΎΡ Π΅ Π΄ΠΎΠ΄Π°Π΄Π΅Π½Π° ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π½ΠΎΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΈ veth.n_rxqueues ΠΈ veth.n_txqueues.
ΠΠ·Π²ΠΎΡ: opennet.ru