์ ์ํฌ์คํ ์ด์ ์์ ๋ก์ปฌ ๊ฒฉ๋ฆฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ ์์ธ์ ์ํฅ์ ๋ฐ์ ๊ฐ๋ฐ๋์์ต๋๋ค.
- ๋ค์ํ ์ธ์ด์๋ ๋ค์ํ IDE์ ํด์ฒด์ธ์ด ํ์ํฉ๋๋ค.
- ๋ค์ํ ํ๋ก์ ํธ์์ ์๋ก ๋ค๋ฅธ ๋ฒ์ ์ ํด์ฒด์ธ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ๋ก์ปฌ๋ก ๋ ธํธ๋ถ์ด๋ ์ํฌ์คํ ์ด์ ์์ ์คํ๋๋ LXD ์ปจํ ์ด๋ ๋ด๋ถ์์ ๊ฐ๋ฐํ๊ณ ๊ทธ๋ํฝ ์ถ๋ ฅ์ ํธ์คํธ๋ก ๋ฆฌ๋๋ ์ ํ๋ ๊ฒ์ ๋๋ค.
์์๋ฅผ ํตํ ๊ตฌ์ฑ Ubuntu 20.04.
ํด๋น ์ต์ ์ ๋ํ ๊ณ ์ฐฐ๊ณผ ์ด์ ๋ ๊ธฐ์ฌ์ ๋ง์ง๋ง ๋ถ๋ถ์์ ์ค๋ช ๋ฉ๋๋ค.
1. LXD ์ค์น
ะ Ubuntu 20.04 LXD๋ ๋ ์ด์ deb ํจํค์ง๋ก ์ค์นํ ์ ์์ผ๋ฉฐ snap์ ํตํด์๋ง ์ค์นํ ์ ์์ต๋๋ค.
$ snap install lxd์ค์น ํ ์ด๊ธฐํ๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
$ lxd init๋ด๊ฐ ๋ณ๊ฒฝํ๋ ์ ์ผํ ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. storage bakend - ๋๋ ์ฌ์ฉํฉ๋๋ค dir ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก. ์ฌ์ง๊ณผ ์ฌ๋ณธ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฒฝ๊ณ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋๋ ๋๋ ค์ํ์ง ์๋๋ค:
๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ ํ ๋ฆฌ ๋ฐฑ์๋๋ ์ตํ์ ์๋จ์ผ๋ก ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๋ชจ๋ ์ฃผ์ LXD ๊ธฐ๋ฅ์ ์ง์ํ์ง๋ง ์ํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋๋ฆฌ๊ณ ๋นํจ์จ์ ์ ๋๋ค.
์ฆ์ ๋ณต์ฌ๋ณธ์ด๋ ์ค๋ ์ท์ด ํ์ํ๋ฏ๋ก ์ธ์คํด์ค์ ์คํ ๋ฆฌ์ง ์ ์ฒด๋ฅผ ๋งค๋ฒ ๋ณต์ฌํด์ผ ํฉ๋๋ค.
2. LXD ํ๋กํ ์ค์
โ ์ด๋ ์ฌ๋ฌ ์ปจํ
์ด๋์ ์ ์ฉ๋๋ ๋งค๊ฐ๋ณ์ ์งํฉ์
๋๋ค. ์ ๊ฒฝ์ฐ์๋ ๋จ์ผ ๊ธฐ๋ณธ ํ๋กํ๋ก ์ถฉ๋ถํฉ๋๋ค. default ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
$ lxc profile device add default X0 disk source=/tmp/.X11-unix/X0 path=/tmp/.X11-unix/X0โ ์ปจํ ์ด๋ ๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํธ์คํธ X11 ์๋ฒ์ ์ํธ ์์ฉํ ์ ์๋๋ก ํฉ๋๋ค.$ lxc profile set default environment.DISPLAY :0- ํ๊ฒฝ ๋ณ์๊ฐDISPLAY์ปจํ ์ด๋์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์น๋์์ต๋๋ค.$ lxc profile set default raw.idmap "both 1000 1000"โ ์ฌ๋ฐ๋ฅธ ์ฌ๋์ ์ํด .
3. ์ปจํ ์ด๋ ์์ฑ ๋ฐ ๊ตฌ์ฑ
์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋ ๋ง๋ค๊ธฐ images:ubuntu/20.04:
$ lxc launch images:ubuntu/20.04 dev1์ ๋ ์ ์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ์ ํธํฉ๋๋ค ์ฌ์ ์ค์น๋ ์ํํธ์จ์ด๊ฐ ์ ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ์ ๋์ฌ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. images: ์ด๋ฏธ์ง ์ด๋ฆ์ผ๋ก. ์ ์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ
์ด๋๋ฅผ ์์ฑํฉ๋๋ค. Ubuntu ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค. $ lxc launch ubuntu/20.04 dev1.
์ปจํ ์ด๋์ ๋ฃจํธ ์ ธ์ ์ก์ธ์ค:
$ lxc exec dev1 -- bashFirefox์ VS Code๋ฅผ ์ค์นํ๊ฒ ์ต๋๋ค(์ ์ฅ์์์) ):
$ apt update
$ apt install curl gpg firefox
$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
$ install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/
$ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list
$ apt update
$ apt install code๋ช ํ์ฑ์ ์ํด ์ปจํ ์ด๋๋ฅผ ํฌํจ์ํค๊ฒ ์ต๋๋ค.
poweroff๋ณด๋์ค! ์ปจํ ์ด๋์ GPU๋ฅผ ์ถ๊ฐํ๋ฉด ์ปจํ ์ด๋์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํด๋น ๊ทธ๋ํฝ ์นด๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค์์ด ํ์ํฉ๋๋ค.
- ๊ธฐ๊ธฐ ์ถ๊ฐ
$ lxc config device add dev1 mygpu gpu; - ํธ์คํธ์ ์ค์น๋ ๊ฒ๊ณผ ๋์ผํ ๋น๋์ค ์นด๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ปจํ ์ด๋์ ์ค์นํฉ๋๋ค.
4. ์ฉ๊ธฐ ์ฌ์ฉ
์ปจํ ์ด๋๊ฐ ์์ง ์คํ ์ค์ด ์๋๋ผ๋ฉด ์ปจํ ์ด๋๋ฅผ ์์ํด์ผ ํฉ๋๋ค.
lxc start dev1๋ฃจํธ๊ฐ ์๋ ์ฌ์ฉ์๋ก VS Code ์คํ ubuntu:
lxc exec dev1 -- sudo --login --user ubuntu codeFirefox๋ฅผ ์คํํฉ๋๋ค:
lxc exec dev1 -- sudo --login --user ubuntu firefox์ ํ๋ฆฌ์ผ์ด์ ์ฐฝ์ ํธ์คํธ์ ํ์๋์ง๋ง ์ปจํ ์ด๋ ๋ด๋ถ์์ ์คํ๋ฉ๋๋ค. ์ด๋ ssh๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ํฝ์ ์ ๋ฌํ๋ ๊ฒ๊ณผ ๋น์ทํฉ๋๋ค.
์คํ ์ค์ธ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ข ๋ฃํ์ง ์์ต๋๋ค. ๊ทธ๋ด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐฝ์ ๋ซ๋ ๊ฒ์ผ๋ก ์ ํํฉ๋๋ค.
5. ๊ฒฐ๋ก
๊ฐ๋ฐ์ ํธ์คํธ OS๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๊ฐ๋ฐ ๋๊ตฌ ์ค์น, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ฒ๊ทธ ๋ฒ์ ์ค์น, ์์คํ ๊ตฌ์ฑ ์์ ํน์ ๋ฐฉ์ ๊ตฌ์ฑ ๋ฐ ๊ธฐํ ์กฐ์์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด ๋ชจ๋ ์์ ์ ๊ฐ๋ฐ์ฉ์ด ์๋ ๋ค๋ฅธ ์ํํธ์จ์ด ๋๋ ์ ์ฒด OS์ ์๊ธฐ์น ์์ ๋์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, OpenSSL ๊ตฌ์ฑ ๋ณ๊ฒฝ์ผ๋ก ์ธํด OS๊ฐ ์ ๋๋ก ์์๋์ง ์์ ์ ์์ต๋๋ค.
์ ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ๋๊ตฌ๋ฅผ ์๋ํด ๋ณด์์ต๋๋ค.
- ๊ฐ์ ๋จธ์ (KVM, VirtualBox ๋ฑ)์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์ ํ์ง์ด์ง๋ง, ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์๋นํ ๋ฆฌ์์ค๋ฅผ ์๋ชจํฉ๋๋ค. Windows (ํธ์คํธ์ ๊ฒฝ์ฐ) Linux๋ค๋ฅธ ์ ํ์ง๋ ์์ต๋๋ค.
- ๋ก์ปฌ ๋จธ์ ์์ ์คํ๋๋ ํด๋ผ์ฐ๋ ๊ฐ๋ฐ ๋๊ตฌ(์ปจํ ์ด๋๋ ๊ฐ์ ๋จธ์ ์ Cloud9, Eclipse Che ๋ฑ)๋ ์ด๋ฌํ ์ด์ ๋ชจ๋์ ๋ง์ถฐ ๊ฐ๋ฐ๋์ง ์์์ผ๋ฉฐ, ์ถ๊ฐ ๊ตฌ์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ๋ฏ๋ก ์๋ ๋ชฉ์ ๋๋ก ํด๋ผ์ฐ๋์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
- Docker ์ปจํ ์ด๋๋ ์๋ ๋ค๋ฅธ ์ฉ๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค. ์ ์๊ฐ์๋ ์์ง ๋ณ๋์ ์ปจํ ์ด๋๋ก ํจํค์ง๋์ง ์์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ฒ ํ๋กํ ํ์ ์ ๋ง๋๋ ๋ฐ๋ ๊ทธ๋ค์ง ํธ๋ฆฌํ์ง ์์ต๋๋ค.
์ ํํ ์ ๊ทผ ๋ฐฉ์์ด ๋จ์ํ๊ณ ์ง์
์ฅ๋ฒฝ์ด ๋ฎ์์ ๋ง์์ ๋ญ๋๋ค. ์ปจํ
์ด๋ ์์ฒด์์๋ ํ๋ก์ ํธ๋ณ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ ์๋์ผ๋ก ์ค์นํ๊ณ ๊ตฌ์ฑํ๊ฑฐ๋ ์๋ํ(Puppet, Ansible ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ฐฐํฌํ ์๋ ์์ต๋๋ค. . ๋ํ ๋ง์ ์์ ์ข
์์ฑ์ด๋ ๋ค๋ฅธ OS ๋ฒ์ ์ ์ค์นํด์ผ ํ๋ ํน์ ์ํํธ์จ์ด๋ฅผ ์คํํ๊ธฐ ์ํด LXD ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์๋ฅผ ๋ค์ด ํ์ํ OS ๋ฒ์ ์ผ๋ก ์ปจํ
์ด๋๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. $ lxc launch images:ubuntu/16.04 dev16.
๊ฒฉ๋ฆฌ ์ธก๋ฉด์์ ์ปจํ ์ด๋ํ๋ ๊ฐ์ํ๋ณด๋ค ๊ณต๊ฒฉ ํ๋ฉด์ด ๋ ๋๋ค๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํธ์คํธ์ ์ปจํ ์ด๋๊ฐ ๋จ์ผ ์ปค๋์ ๊ณต์ ํ๋๋ฐ, ์ด ์ทจ์ฝ์ ์ ํตํด ๋งฌ์จ์ด๊ฐ ์ปจํ ์ด๋์์ ํ์ถํ ์ ์์ต๋๋ค. ์์ฌ์ค๋ฌ์ด ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๋ ์คํ์ ๊ฒฝ์ฐ, ๋ ์ ํฉํ ๊ฒฉ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ์ฉํ ๋งํฌ
- ํ๋ธ๋ฅด์ ๋ํ ๊ฐ๊ฒฐํ ๊ธฐ์ฌ
- LXD์ LXC๋ฅผ ํผ๋ํ์ง ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด ๋์ ๋ค๋ฅด์ง๋ง ๊ด๋ จ์ด ์์ต๋๋ค.
- โ ์ด ๋ธ๋ก๊ทธ์๋ LXD์ ๋ํ ๋ง์ ์ ์ฉํ ์ค์ฉ ์ ๋ณด๊ฐ ๋ด๊ฒจ ์์ต๋๋ค.
- โ Microsoft๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์๋ก์ด ์ด์ ๋ธ๋ฆฌ๋ฅผ ์์งํ์ฌ ํน๋ณ ๋ผ์ด์ ์ค๋ฅผ ํตํด ๋ฐฐํฌํฉ๋๋ค.
์ถ์ฒ : habr.com
