Canonical์ ๊ฐ์ ๋จธ์ ์ ๊ฐ๊น์ด ์ ์ฒด ์์คํ ํ๊ฒฝ์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ๊ถํ์ด ์๋ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋(OCI)๋ฅผ ์คํํ๋ ๋ฐ ์ ํฉํ ๋ฐํ์์ ์ ๊ณตํ๋ LXC 5.0 ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋ ํดํท ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐํํ์ต๋๋ค. LXC๋ ๊ฐ๋ณ ์ปจํ ์ด๋ ์์ค์์ ์๋ํ๋ ์ ์์ค ํดํท์ ๋๋ค. ์ฌ๋ฌ ์๋ฒ์ ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๋ ์ปจํ ์ด๋๋ฅผ ์ค์ ์ง์ค์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด LXC๋ฅผ ๊ธฐ๋ฐ์ผ๋ก LXD ์์คํ ์ด ๊ฐ๋ฐ๋๊ณ ์์ต๋๋ค. LXC 5.0 ๋ธ๋์น๋ ์ฅ๊ธฐ ์ง์ ๋ฆด๋ฆฌ์ค๋ก ๋ถ๋ฅ๋๋ฉฐ ์ ๋ฐ์ดํธ๋ 5๋ ์ ๊ฑธ์ณ ์์ฑ๋ฉ๋๋ค. LXC ์ฝ๋๋ C๋ก ์์ฑ๋์์ผ๋ฉฐ GPLv2์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
LXC์๋ liblxc ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ํธ๋ฆฌํฐ ์ธํธ(lxc-create, lxc-start, lxc-stop, lxc-ls ๋ฑ), ์ปจํ ์ด๋ ๊ตฌ์ถ์ ์ํ ํ ํ๋ฆฟ ๋ฐ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๋ฐ์ธ๋ฉ ์ธํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๊ฒฉ๋ฆฌ๋ ํ์ค Linux ์ปค๋ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ํ๋ก์ธ์ค, ipc ๋คํธ์ํฌ ์คํ, uts, ์ฌ์ฉ์ ID ๋ฐ ๋ง์ดํธ ์ง์ ์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ๋ค์์คํ์ด์ค ๋ฉ์ปค๋์ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค. cgroup์ ๋ฆฌ์์ค๋ฅผ ์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ถํ์ ๋ฎ์ถ๊ณ ์ก์ธ์ค๋ฅผ ์ ํํ๊ธฐ ์ํด Apparmor ๋ฐ SELinux ํ๋กํ, Seccomp ์ ์ฑ , Chroots(pivot_root) ๋ฐ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ปค๋ ๊ธฐ๋ฅ์ด ์ฌ์ฉ๋ฉ๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- ์ฐ๋ฆฌ๋ autotools์์ X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ๋ฐ GTK์ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ๋ฐ์๋ ์ฌ์ฉ๋๋ Meson ๋น๋ ์์คํ ์ผ๋ก ์ ํํ์ต๋๋ค.
- cgroup ๊ตฌ์ฑ์ ์ํ ์๋ก์ด ์ต์ ์ถ๊ฐ - lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot ๋ฐ lxc.cgroup.dir.container.inner. ์ด๋ฅผ ํตํด cgroup์ ๋ช ์์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋ ๊ฒฝ๋ก, ๋ชจ๋ํฐ๋ง ํ๋ก์ธ์ค ๋ฐ ์ค์ฒฉ๋ cgroup ๊ณ์ธต ๊ตฌ์กฐ.
- ๋ณ๋์ ์์คํ ์๊ณ ์ํ๋ฅผ ์ปจํ ์ด๋์ ๋ฐ์ธ๋ฉํ๋ ์๊ฐ ๋ค์์คํ์ด์ค์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์ด ์์คํ ์๊ณ์๋ ๋ค๋ฅธ ์ปจํ ์ด๋์์ ๊ณ ์ ํ ์๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ์ ์ํด lxc.time.offset.boot ๋ฐ lxc.time.offset.monotonic ์ต์ ์ด ์ ์๋์ด ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ๊ธฐ๋ณธ ์์คํ ์๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ปจํ ์ด๋์ ์คํ์ ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
- ๊ฐ์ ์ด๋๋ท ์ด๋ํฐ(Veth)์ ๋ํด VLAN ์ง์์ด ๊ตฌํ๋ฉ๋๋ค. VLAN์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๊ธฐ๋ณธ VLAN์ ์ค์ ํ๋ veth.vlan.id์ ์ถ๊ฐ ํ๊ทธ๊ฐ ์ง์ ๋ VLAN์ ๋ฐ์ธ๋ฉํ๋ veth.vlan.tagged.id ์ต์ ์ด ์ ๊ณต๋ฉ๋๋ค.
- ๊ฐ์ ์ด๋๋ท ์ด๋ํฐ์ ๊ฒฝ์ฐ ์๋ก์ด ์ต์ veth.n_rxqueues ๋ฐ veth.n_txqueues๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ฐ ์ ์ก ๋๊ธฐ์ด์ ํฌ๊ธฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
์ถ์ฒ : opennet.ru