10์ XNUMX์ผ Slurm์์ ์์๋จ
์ด ๊ธฐ์ฌ์์๋ Docker์ ์ญ์ฌ์ ์ฃผ์ ์ถ์ํ์ธ Image, Cli, Dockerfile์ ๋ํด ์ค๋ช ํฉ๋๋ค. ํด๋น ๊ฐ์๋ ์ด๋ณด์๋ฅผ ๋์์ผ๋ก ํ ๊ฒ์ด๋ฏ๋ก ์๋ จ๋ ์ฌ์ฉ์์๊ฒ๋ ํฅ๋ฏธ๊ฐ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ก, ๋งน์ฅ ๋๋ ๊น์ ์นจ์๊ฐ ์์ต๋๋ค. ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ๊ฒ์ ๋๋ค.
๋์ปค๋ ๋ฌด์์ธ๊ฐ
Wikipedia์์ Docker์ ์ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Docker๋ ์ปจํ ์ด๋ํ๋ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ํํ๋ ์ํํธ์จ์ด์ ๋๋ค.
์ด ์ ์์์ ๋ช ํํ ๊ฒ์ ์์ต๋๋ค. ํนํ "์ปจํ ์ด๋ํ๋ฅผ ์ง์ํ๋ ํ๊ฒฝ์์"๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ๋ถ๋ถ๋ช ํฉ๋๋ค. ์์๋ณด๊ธฐ ์ํด ์๊ฐ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ์ ๊ฐ ์ ํต์ ์ผ๋ก '๋ชจ๋๋ฆฌ์ ์๋'๋ผ๊ณ ๋ถ๋ฅด๋ ์๋๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค.
๋ชจ๋๋ฆฌ์ ์๋
๋ชจ๋๋ฆฌ์ ์๋๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ง์ ์ข ์์ฑ๊ณผ ํจ๊ป ๋ชจ๋๋ฆฌ์์ด์๋ 2000๋ ๋ ์ด๋ฐ์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๋์์ ์๋ฒ๊ฐ ๋ง์ง ์์ ์ฐ๋ฆฌ ๋ชจ๋ ์ด๋ฆ์ ์๊ณ ๋ชจ๋ํฐ๋งํ์ต๋๋ค. ์ด๋ ๊ฒ ์ฌ๋ฏธ์๋ ๋น๊ต๊ฐ ์์ต๋๋ค.
์ ์๋๋ฌผ์ ๊ฐ์ถ์ด๋ค. ๋ชจ๋๋ฆฌ์ ์๋์ ์ฐ๋ฆฌ๋ ์๋ฒ๋ฅผ ์ ์๋๋ฌผ์ฒ๋ผ ๋ํ๊ณ ์์งํ๊ณ ์์คํ ์ฌ๊ธฐ๋ฉฐ ๋จผ์ง๋ฅผ ๋ ๋ ค ๋ฒ๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ํด ๊ฐ์ํ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์๋ฒ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๋จธ์ ์ผ๋ก ๋๋์ด ํ๊ฒฝ์ ๊ฒฉ๋ฆฌํ์ต๋๋ค.
ํ์ดํผ๋ฐ์ด์ ๊ธฐ๋ฐ ๊ฐ์ํ ์์คํ
VMware, VirtualBox, Hyper-V, Qemu KVM ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ํ ์์คํ ์ ๋ํด์๋ ๋๊ตฌ๋ ๋ค์ด๋ณด์ จ์ ๊ฒ์ ๋๋ค. ์ด๋ฌํ ์์คํ ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฒฉ๋ฆฌ ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ์ง๋ง ๋จ์ ๋ ์์ต๋๋ค. ๊ฐ์ํ๋ฅผ ์ํํ๋ ค๋ฉด ํ์ดํผ๋ฐ์ด์ ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ดํผ๋ฐ์ด์ ๋ ๋ฆฌ์์ค ์ค๋ฒํค๋์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๋จธ์ ์์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก ์ด์ ์ฒด์ , Nginx, Apache ๋ฐ MySQL์ ํฌํจํ๋ ๊ฑฐ๋ํ ์ด๋ฏธ์ง์ธ ์ ์ฒด ๊ฑฐ๋ ์ด๋ฏธ์ง์ ๋๋ค. ์ด๋ฏธ์ง๊ฐ ํฌ๊ณ ๊ฐ์๋จธ์ ์๋์ด ๋ถํธํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ ๋จธ์ ์์ ์๋๊ฐ ๋๋ ค์ง ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ปค๋ ์์ค์์ ๊ฐ์ํ ์์คํ ์ด ๋ง๋ค์ด์ก์ต๋๋ค.
์ปค๋ ์์ค ๊ฐ์ํ ์์คํ
์ปค๋ ์์ค ๊ฐ์ํ๋ OpenVZ, Systemd-nspawn, LXC ์์คํ ์์ ์ง์๋ฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ํ์ ๋ํ์ ์ธ ์๊ฐ LXC(Linux Containers)์ ๋๋ค.
LXC๋ ๋จ์ผ ๋ ธ๋์์ Linux ์ด์ ์ฒด์ ์ ๊ฒฉ๋ฆฌ๋ ์ฌ๋ฌ ์ธ์คํด์ค๋ฅผ ์คํํ๊ธฐ ์ํ ์ด์ ์ฒด์ ์์ค ๊ฐ์ํ ์์คํ ์ ๋๋ค. LXC๋ ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ์ง ์๊ณ ์์ฒด ํ๋ก์ธ์ค ๊ณต๊ฐ๊ณผ ๋คํธ์ํฌ ์คํ์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ ์์ฑํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก LXC๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํฉ๋๋ค. ๊ฐ์ ๋จธ์ ๊ณผ ์ปจํ ์ด๋์ ์ฐจ์ด์ ์ ๋ฌด์์ธ๊ฐ์?
์ปจํ ์ด๋๋ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฐ ์ ํฉํ์ง ์์ต๋๋ค. ์ปจํ ์ด๋์์ ํธ์คํธ๋ก ํ์ถํ ์ ์๋ ์ปค๋ ์์ค์ ๊ฐ์ํ ์์คํ ์์ ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฒฉ๋ฆฌํด์ผ ํ๋ค๋ฉด ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ฐ์ํ์ ์ปจํ
์ด๋ํ์ ์ฐจ์ด์ ์ ๋ค์ด์ด๊ทธ๋จ์์ ํ์ธํ ์ ์์ต๋๋ค.
ํ๋์จ์ด ํ์ดํผ๋ฐ์ด์ , OS ์์ ํ์ดํผ๋ฐ์ด์ , ์ปจํ
์ด๋๊ฐ ์์ต๋๋ค.
์ ๋ง๋ก ๋ฌด์ธ๊ฐ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด ํ๋์จ์ด ํ์ดํผ๋ฐ์ด์ ๊ฐ ์ข์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง์ ํ๋ก์ธ์ ์์ค์์ ๋ถ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋ก๊ทธ๋จ์ผ๋ก๋ ํ์ดํผ๋ฐ์ด์ ๊ฐ ์๊ณ ์ปจํ ์ด๋๋ ์๋๋ฐ ์ด์ ๋ํด ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์ปจํ ์ด๋ํ ์์คํ ์๋ ํ์ดํผ๋ฐ์ด์ ๊ฐ ์์ง๋ง ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ์ปจํ ์ด๋ ์์ง์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ ๊ฐ๋ณ๊ธฐ ๋๋ฌธ์ ์ฝ์ด ์์ ์ผ๋ก ์ธํด ์ค๋ฒํค๋๊ฐ ์ ๊ฑฐ๋ ์ ํ ์์ต๋๋ค.
์ปค๋ ์์ค์์ ์ปจํ ์ด๋ํ์ ์ฌ์ฉ๋๋ ๊ฒ
๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ฒฉ๋ฆฌ๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๋ ์ฃผ์ ๊ธฐ์ ์ ๋ค์์คํ์ด์ค์ ์ ์ด ๊ทธ๋ฃน์ ๋๋ค.
๋ค์์คํ์ด์ค: PID, ๋คํธ์ํน, ๋ง์ดํธ ๋ฐ ์ฌ์ฉ์. ๋ ๋ง์ ๋ด์ฉ์ด ์์ง๋ง ์ดํด์ ํธ์๋ฅผ ์ํด ์ฌ๊ธฐ์๋ง ์ง์คํ๊ฒ ์ต๋๋ค.
PID ๋ค์์คํ์ด์ค๋ ํ๋ก์ธ์ค๋ฅผ ์ ํํฉ๋๋ค. ์๋ฅผ ๋ค์ด PID ๋ค์์คํ์ด์ค๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ํ๋ก์ธ์ค๋ฅผ ๋ฐฐ์นํ๋ฉด PID 1์ด ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์์คํ ์์ PID 1์ systemd ๋๋ init์ ๋๋ค. ๋ฐ๋ผ์ ์๋ก์ด ๋ค์์คํ์ด์ค์ ํ๋ก์ธ์ค๋ฅผ ๋ฐฐ์นํ๋ฉด PID 1๋ ์์ ํฉ๋๋ค.
๋คํธ์ํน ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋คํธ์ํฌ๋ฅผ ์ ํ/๊ฒฉ๋ฆฌํ๊ณ ์์ฒด ์ธํฐํ์ด์ค๋ฅผ ๋ด๋ถ์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ๋ง์ดํธ๋ ํ์ผ ์์คํ ์ ํ ์ฌํญ์ ๋๋ค. ์ฌ์ฉ์ - ์ฌ์ฉ์์ ๋ํ ์ ํ ์ฌํญ์ ๋๋ค.
์ ์ด ๊ทธ๋ฃน: ๋ฉ๋ชจ๋ฆฌ, CPU, IOPS, ๋คํธ์ํฌ - ์ด ์ฝ 12๊ฐ์ง ์ค์ . ๊ทธ๋ ์ง ์์ผ๋ฉด C๊ทธ๋ฃน(โC-๊ทธ๋ฃนโ)์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
์ ์ด ๊ทธ๋ฃน์ ์ปจํ ์ด๋์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ ์ด ๊ทธ๋ฃน์ ํตํด ์ปจํ ์ด๋๊ฐ ํน์ ์ ์ด์์ ๋ฆฌ์์ค๋ฅผ ์๋นํด์๋ ์ ๋๋ค๊ณ ๋งํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋ํ๊ฐ ์๋ฒฝํ๊ฒ ์๋ํ๋ ค๋ฉด ๊ธฐ๋ฅ, ๊ธฐ๋ก ์ ๋ณต์ฌ ๋ฑ์ ์ถ๊ฐ ๊ธฐ์ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ฅ๋ ฅ์ ํ๋ก์ธ์ค๊ฐ ๋ฌด์์ ํ ์ ์๊ณ ๋ฌด์์ ํ ์ ์๋์ง๋ฅผ ์๋ ค์ค ๋ ๋ํ๋ฉ๋๋ค. ์ปค๋ ์์ค์์ ์ด๋ ๋ง์ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ ๋จ์ํ ๋นํธ๋งต์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฃจํธ ์ฌ์ฉ์๋ ๋ชจ๋ ๊ถํ์ ๊ฐ์ง๋ฉฐ ๋ชจ๋ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์๊ฐ ์๋ฒ๋ ์์คํ ์๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Time Capsule์ ๊ธฐ๋ฅ์ด ์๊ณ ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค. ๊ถํ์ ์ฌ์ฉํ๋ฉด ํ๋ก์ธ์ค์ ๋ํ ์ ํ์ ์ ์ฐํ๊ฒ ๊ตฌ์ฑํ์ฌ ์์ ์ ๋ณดํธํ ์ ์์ต๋๋ค.
Copy-on-write ์์คํ ์ ์ฌ์ฉํ๋ฉด Docker ์ด๋ฏธ์ง๋ก ์์ ํ๊ณ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
Docker๋ ํ์ฌ Cgroups v2์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์์ผ๋ฏ๋ก ์ด ๋ฌธ์์์๋ ํนํ Cgroups v1์ ์ค์ ์ ๋ก๋๋ค.
ํ์ง๋ง ์ญ์ฌ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ํ ์์คํ ์ด ์ปค๋ ์์ค์ ๋ฑ์ฅํ๋ฉด์ ํ๋ฐํ ์ฌ์ฉ๋๊ธฐ ์์ํ์ต๋๋ค. ํ์ดํผ๋ฐ์ด์ ์ ์ค๋ฒํค๋๋ ์ฌ๋ผ์ก์ง๋ง ๋ช ๊ฐ์ง ๋ฌธ์ ๋ ๋จ์ ์์ต๋๋ค.
- ํฐ ์ด๋ฏธ์ง: ์ด์ ์ฒด์ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ค์ํ ์ํํธ์จ์ด๋ฅผ ๋์ผํ OpenVZ์ ๋ฐ์ด ๋ฃ์ผ๋ฉด ๊ฒฐ๊ตญ ์ด๋ฏธ์ง๊ฐ ์ฌ์ ํ ์๋นํ ํฐ ๊ฒ์ผ๋ก ๋ํ๋ฉ๋๋ค.
- ํฌ์ฅ ๋ฐ ๋ฐฐ์ก์ ๋ํ ์ผ๋ฐ์ ์ธ ํ์ค์ด ์์ผ๋ฏ๋ก ์ข ์์ฑ ๋ฌธ์ ๊ฐ ๋จ์ ์์ต๋๋ค. ๋ ๊ฐ์ ์ฝ๋๊ฐ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฒ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ค ์ฌ์ด์ ๊ฐ๋ฑ์ด ์์ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ค์ ์๋๊ฐ ๋๋ํ์ต๋๋ค.
์ปจํ ์ด๋ ์๋
์ปจํ ์ด๋ ์๋๊ฐ ๋๋ํ๋ฉด์ ์ปจํ ์ด๋ ์์ ์ฒ ํ์ด ๋ฐ๋์์ต๋๋ค.
- ํ๋์ ํ๋ก์ธ์ค - ํ๋์ ์ปจํ ์ด๋.
- ์ฐ๋ฆฌ๋ ํ๋ก์ธ์ค์ ํ์ํ ๋ชจ๋ ์ข ์์ฑ์ ํด๋น ์ปจํ ์ด๋์ ์ ๋ฌํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ชจ๋๋ฆฌ์ค๋ฅผ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ ๋จํด์ผ ํฉ๋๋ค.
- ์ด๋ฏธ์ง๊ฐ ์์์๋ก ์ข์ต๋๋ค. ๊ฐ๋ฅํ ์ทจ์ฝ์ ์ด ์ ๊ณ ๋กค์์ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
- ์ธ์คํด์ค๋ ์ผ์์ ์ด ๋ฉ๋๋ค.
์ ๊ฐ ์ ์๋๋ฌผ๊ณผ ์์ ๊ดํด ๋งํ ๊ฒ์ ๊ธฐ์ตํ์๋์? ์ด์ ์๋ ์ธ์คํด์ค๊ฐ ๊ฐ์ถ ๊ฐ์์ง๋ง ์ด์ ๋ ์์ฒ๋ผ ๋์์ต๋๋ค. ์ด์ ์๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ธ ๋ชจ๋๋ฆฌ์ค๊ฐ ์์์ต๋๋ค. ์ด์ ๋ 100๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค, 100๊ฐ์ ์ปจํ ์ด๋์ ๋๋ค. ์ผ๋ถ ์ปจํ ์ด๋์๋ 2~3๊ฐ์ ๋ณต์ ๋ณธ์ด ์์ ์ ์์ต๋๋ค. ๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ์ ์ดํ๋ โโ๊ฒ์ด ๋ ์ค์ํด์ก์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ๋ ์ค์ํ ๊ฒ์ ์๋น์ค ์์ฒด์ ๊ฐ์ฉ์ฑ, ์ฆ ์ด ์ปจํ ์ด๋ ์ธํธ์ ๊ธฐ๋ฅ์ ๋๋ค. ์ด๋ก ์ธํด ๋ชจ๋ํฐ๋ง ์ ๊ทผ ๋ฐฉ์์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
2014~2015๋ ์๋ Docker๊ฐ ๋ฒ์ฑํ์ต๋๋ค. ์ง๊ธ ์ด์ผ๊ธฐํ ๊ธฐ์ ์ ๋๋ค.
Docker๋ ์ฒ ํ์ ๋ฐ๊พธ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ํจํค์ง์ ํ์คํํ์ต๋๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ์ฌ ์ ์ฅ์๋ก ๋ณด๋ด๊ณ ๊ฑฐ๊ธฐ์์ ๋ค์ด๋ก๋ํ์ฌ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
ํ์ํ ๋ชจ๋ ๊ฒ์ Docker ์ปจํ ์ด๋์ ๋ฃ์ด ์ข ์์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. Docker๋ ์ฌํ์ฑ์ ๋ณด์ฅํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์ฌํ ๋ถ๊ฐ๋ฅ์ฑ์ ์ง๋ฉดํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๊ณ ์ด๋ฅผ ํ๋ก๋์ ์ผ๋ก ๋ฐ์ด๋ฃ์ผ๋ฉด ์๋์ด ์ค์ง๋ฉ๋๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋๋ค. Docker ์ปจํ ์ด๋๊ฐ ์์๋์ด ํ์ํ ์์ ์ ์ํํ๋ค๋ฉด ๋์ ํ๋ฅ ๋ก ํ๋ก๋์ ํ๊ฒฝ์์ ์์ํ์ฌ ๊ทธ๊ณณ์์๋ ๋์ผํ ์์ ์ ์ํํ ๊ฒ์ ๋๋ค.
์ค๋ฒํค๋์ ๋ํ ์ฌ๋ด
๊ฐ์ ๋น์ ๋ํ ๋ ผ์์ ํญ์ ์กด์ฌํฉ๋๋ค. ์ด๋ค ์ฌ๋๋ค์ Docker๊ฐ Linux ์ปค๋๊ณผ ์ปจํ ์ด๋ํ์ ํ์ํ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ๋ก๋๋ฅผ ์ ๋ฌํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, "Docker๊ฐ ์ค๋ฒํค๋๋ผ๊ณ ๋งํ๋ฉด Linux ์ปค๋์ด ์ค๋ฒํค๋์ ๋๋ค."
๋ฐ๋ฉด์ ๋ ๊น์ด ๋ค์ด๊ฐ ๋ณด๋ฉด Docker์๋ ์ค์ ๋ก ์ค๋ฒํค๋๋ผ๊ณ ํ ์ ์๋ ๋ช ๊ฐ์ง ํญ๋ชฉ์ด ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ PID ๋ค์์คํ์ด์ค์ ๋๋ค. ํ๋ก์ธ์ค๋ฅผ ๋ค์์คํ์ด์ค์ ๋ฐฐ์นํ๋ฉด PID 1์ด ํ ๋น๋ฉ๋๋ค. ๋์์ ์ด ํ๋ก์ธ์ค์๋ ์ปจํ ์ด๋ ์ธ๋ถ์ ํธ์คํธ ๋ค์์คํ์ด์ค์ ์๋ ๋ ๋ค๋ฅธ PID๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ปจํ ์ด๋์์ Nginx๋ฅผ ์์ํ๋๋ฐ PID 1(๋ง์คํฐ ํ๋ก์ธ์ค)์ด ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์คํธ์๋ PID 12623์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์ผ๋ง๋ ๋ง์ ์ค๋ฒํค๋์ธ์ง ๋งํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
๋ ๋ฒ์งธ๋ Cgroup์ ๋๋ค. Cgroup์ ๋ฉ๋ชจ๋ฆฌ, ์ฆ ์ปจํ ์ด๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ์ฑํ๋๋ฉด ์นด์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ฐ์ด ํ์ฑํ๋ฉ๋๋ค. ์ปค๋์ ํ ๋น๋ ํ์ด์ง ์์ ์ด ์ปจํ ์ด๋์ ์์ง ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ด์ง ์๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๋ ์ค๋ฒํค๋์ผ ์ ์์ง๋ง ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง์ ๋ํ ์ ํํ ์ฐ๊ตฌ๋ ๋ณธ ์ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ Docker์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์๊ธฐ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ์ ํ๋๋ ๊ฒ์ ์์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฑ๋ฅ์ ๊ดํด ํ ๊ฐ์ง ๋ ์ธ๊ธํ๊ฒ ์ต๋๋ค. ์ผ๋ถ ์ปค๋ ๋งค๊ฐ๋ณ์๋ ํธ์คํธ์์ ์ปจํ ์ด๋๋ก ์ ๋ฌ๋ฉ๋๋ค. ํนํ ์ผ๋ถ ๋คํธ์ํฌ ๋งค๊ฐ๋ณ์. ๋ฐ๋ผ์ Docker์์ ๋คํธ์ํฌ๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ณ ์ฑ๋ฅ ํญ๋ชฉ์ ์คํํ๋ ค๋ฉด ์ต์ํ ์ด๋ฌํ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ถ nf_conntrack.
Docker ๊ฐ๋ ์ ๋ณด
Docker๋ ์ฌ๋ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- Docker Daemon์ ๋์ผํ ์ปจํ ์ด๋ ์์ง์ ๋๋ค. ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค.
- Docker CII๋ Docker ๊ด๋ฆฌ ์ ํธ๋ฆฌํฐ์ ๋๋ค.
- Dockerfile - ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋๋ค.
- ์ด๋ฏธ์ง โ ์ปจํ ์ด๋๊ฐ ๋กค์์๋๋ ์ด๋ฏธ์ง์ ๋๋ค.
- ์ปจํ ์ด๋.
- Docker ๋ ์ง์คํธ๋ฆฌ๋ ์ด๋ฏธ์ง ์ ์ฅ์์ ๋๋ค.
๊ฐ๋ต์ ์ผ๋ก ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Docker ๋ฐ๋ชฌ์ Docker_host์์ ์คํ๋๊ณ ์ปจํ ์ด๋๋ฅผ ์์ํฉ๋๋ค. ๋ช ๋ น์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ต๋๋ค: ์ด๋ฏธ์ง ๋น๋, ์ด๋ฏธ์ง ๋ค์ด๋ก๋, ์ปจํ ์ด๋ ์คํ. Docker ๋ฐ๋ชฌ์ ๋ ์ง์คํธ๋ฆฌ๋ก ์ด๋ํ์ฌ ์คํํฉ๋๋ค. Docker ํด๋ผ์ด์ธํธ๋ ๋ก์ปฌ(Unix ์์ผ) ๋ฐ ์๊ฒฉ ํธ์คํธ์ TCP๋ฅผ ํตํด ์ก์ธ์คํ ์ ์์ต๋๋ค.
๊ฐ ๊ตฌ์ฑ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋์ปค ๋ฐ๋ชฌ - ์ด๊ฒ์ ์๋ฒ ๋ถ๋ถ์ด๋ฉฐ ํธ์คํธ ์์คํ ์์ ์๋ํฉ๋๋ค. ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ด๋ฏธ์ง์์ ์ปจํ ์ด๋๋ฅผ ์์ํ๊ณ ์ปจํ ์ด๋ ์ฌ์ด์ ๋คํธ์ํฌ๋ฅผ ์์ฑํ๊ณ ๋ก๊ทธ๋ฅผ ์์งํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ โ์ด๋ฏธ์ง๋ฅผ ์ฐฝ์กฐํ๋ผโ๊ณ ๋งํ ๋ ์ ๋ง๋ ๊ทธ๋ ๊ฒ ํ๊ณ ์๋ ๊ฒ์ ๋๋ค.
๋์ปค CLI โ Docker ํด๋ผ์ด์ธํธ ๋ถ๋ถ, ๋ฐ๋ชฌ ์์ ์ ์ํ ์ฝ์ ์ ํธ๋ฆฌํฐ์ ๋๋ค. ๋ฐ๋ณตํฉ๋๋ค. ๋ก์ปฌ๋ฟ๋ง ์๋๋ผ ๋คํธ์ํฌ๋ฅผ ํตํด์๋ ์๋ํ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ๋ช ๋ น:
docker ps - ํ์ฌ Docker ํธ์คํธ์์ ์คํ ์ค์ธ ์ปจํ
์ด๋๋ฅผ ํ์ํฉ๋๋ค.
docker Images - ๋ก์ปฌ๋ก ๋ค์ด๋ก๋ํ ์ด๋ฏธ์ง๋ฅผ ํ์ํฉ๋๋ค.
docker search <> - ๋ ์ง์คํธ๋ฆฌ์์ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํฉ๋๋ค.
docker pull <> - ๋ ์ง์คํธ๋ฆฌ์์ ๋จธ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
๋์ปค ๋น๋ < > - ์ด๋ฏธ์ง๋ฅผ ์์งํฉ๋๋ค.
docker run <> - ์ปจํ
์ด๋๋ฅผ ์์ํฉ๋๋ค.
docker rm <> - ์ปจํ
์ด๋๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
docker ๋ก๊ทธ <> - ์ปจํ
์ด๋ ๋ก๊ทธ
docker start/stop/restart <> - ์ปจํ
์ด๋ ์์
์ด๋ฌํ ๋ช ๋ น์ ์์งํ๊ณ ์ฌ์ฉํ๋ ๋ฐ ์์ ๊ฐ์ด ์๋ค๋ฉด ์ฌ์ฉ์ ์์ค์์ Docker์ 70% ๋ฅ์ํ๋ค๊ณ ์๊ฐํ์ธ์.
๋์ปค ํ์ผ - ์ด๋ฏธ์ง ์์ฑ ์ง์นจ. ๊ฑฐ์ ๋ชจ๋ ๋ช ๋ น ๋ช ๋ น์ ์๋ก์ด ๋ ์ด์ด์ ๋๋ค. ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Dockerfile์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ผ์ชฝ์๋ ๋ช ๋ น, ์ค๋ฅธ์ชฝ์๋ ์ธ์๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์๋(๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก Dockerfile์ ๊ธฐ๋ก๋) ๊ฐ ๋ช ๋ น์ Image์ ์ ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค.
์ผ์ชฝ๋ง ๋ด๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋๋ต์ ์ผ๋ก ์ ์ ์๋ค. ์ฐ๋ฆฌ๋ "์ฐ๋ฆฌ๋ฅผ ์ํด ํด๋๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์"๋ผ๊ณ ๋งํฉ๋๋ค. ์ด๊ฒ์ ํ๋์ ๋ ์ด์ด์ ๋๋ค. "ํด๋๋ฅผ ์๋ํ๊ฒ ๋ง๋ค๊ธฐ"๋ ๋ ๋ค๋ฅธ ๋ ์ด์ด์ ๋๋ค. ๋ ์ด์ด ์ผ์ดํฌ๋ ์ถ์ ๋ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๋ค๋ฅธ Dockerfile์ ๋ง๋ค๊ณ ๋ง์ง๋ง ์ค์์ ๋ญ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด("python" "main.py" ์ด์ธ์ ๋ค๋ฅธ ๊ฒ์ ์คํํ๊ฑฐ๋ ๋ค๋ฅธ ํ์ผ์์ ์ข ์์ฑ์ ์ค์นํ๋ฉด) ์ด์ ๋ ์ด์ด๊ฐ ์บ์๋ก ์ฌ์ฌ์ฉ๋ฉ๋๋ค.
์์ - ์ปจํ ์ด๋ ํฌ์ฅ์ ๋๋ค. ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง์์ ์์๋ฉ๋๋ค. ํจํค์ง ๊ด๋ฆฌ์์ ๊ด์ ์์ Docker๋ฅผ ๋ณด๋ฉด(๋ง์น deb ๋๋ rpm ํจํค์ง๋ก ์์ ํ๋ ๊ฒ์ฒ๋ผ) ์ด๋ฏธ์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก rpm ํจํค์ง์ ๋๋ค. yum install์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์นํ๊ณ , ์ญ์ ํ๊ณ , ์ ์ฅ์์์ ์ฐพ์์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง์์ ์์๋๊ณ Docker ๋ ์ง์คํธ๋ฆฌ(yum๊ณผ ์ ์ฌ ์ ์ฅ์)์ ์ ์ฅ๋๋ฉฐ ๊ฐ ์ด๋ฏธ์ง์๋ SHA-256 ํด์, ์ด๋ฆ ๋ฐ ํ๊ทธ๊ฐ ์์ต๋๋ค.
์ด๋ฏธ์ง๋ Dockerfile์ ์ง์นจ์ ๋ฐ๋ผ ๋น๋๋ฉ๋๋ค. Dockerfile์ ๊ฐ ๋ช ๋ น์ ์ ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค. ๋ ์ด์ด๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ Docker ์ด๋ฏธ์ง ์ ์ฅ์์ ๋๋ค. OS์ ์ ์ฌํ๊ฒ Docker์๋ ๊ณต๊ฐ ํ์ค ๋ ์ง์คํธ๋ฆฌ์ธ dockerhub๊ฐ ์์ต๋๋ค. ํ์ง๋ง ์์ ๋ง์ ์ ์ฅ์, ์ฆ Docker ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
์ปจํ ์ด๋ - ์ด๋ฏธ์ง์์ ์คํ๋๋ ๋ด์ฉ. Dockerfile์ ์ง์นจ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ ๋ค์ ์ด ์ด๋ฏธ์ง์์ ์คํํฉ๋๋ค. ์ด ์ปจํ ์ด๋๋ ๋ค๋ฅธ ์ปจํ ์ด๋์ ๊ฒฉ๋ฆฌ๋์ด ์์ผ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํ๋์ ์ปจํ ์ด๋ - ํ๋์ ํ๋ก์ธ์ค์ ๋๋ค. ๋ ๊ฐ์ง ํ๋ก์ธ์ค๋ฅผ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๋ Docker ์ด๋ ์ ๋ค์ ์ด๊ธ๋ฉ๋๋ค.
"ํ๋์ ์ปจํ ์ด๋, ํ๋์ ํ๋ก์ธ์ค" ์๊ตฌ ์ฌํญ์ PID ๋ค์์คํ์ด์ค์ ๊ด๋ จ์ด ์์ต๋๋ค. PID 1์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค์์คํ์ด์ค์์ ์์๋ ๋ ๊ฐ์๊ธฐ ์ข ๋ฃ๋๋ฉด ์ ์ฒด ์ปจํ ์ด๋๋ ์ข ๋ฃ๋ฉ๋๋ค. ๋ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์ด๋ฉด ํ๋๋ ์ด์ ์๊ณ ๋ค๋ฅธ ํ๋๋ ์ข ๋ฃ๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋๋ ๊ณ์ํด์ ์ด์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ง๋ฌธ์ด๋ฏ๋ก ๋ค๋ฅธ ์๋ฃ์์ ์ด์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
๊ณผ์ ์ ๊ธฐ๋ฅ๊ณผ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ๋ ์์ธํ ์์๋ณด๋ ค๋ฉด ๋ค์ ๋งํฌ๋ฅผ ํด๋ฆญํ์ธ์.
์์ฑ์: Marcel Ibraev, ๊ณต์ธ Kubernetes ๊ด๋ฆฌ์, Southbridge์ ์ค๋ฌด ์์ง๋์ด, Slurm ๊ณผ์ ์ ๊ฐ์ฌ ๋ฐ ๊ฐ๋ฐ์.
์ถ์ฒ : habr.com