Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ญ์‚ฌ์™€ ๊ธฐ๋ณธ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

10์›” XNUMX์ผ Slurm์—์„œ ์‹œ์ž‘๋จ ๋„์ปค ๋น„๋””์˜ค ์ฝ”์Šค, ๊ธฐ๋ณธ ์ถ”์ƒํ™”๋ถ€ํ„ฐ ๋„คํŠธ์›Œํฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Docker์˜ ์—ญ์‚ฌ์™€ ์ฃผ์š” ์ถ”์ƒํ™”์ธ Image, Cli, Dockerfile์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ•์˜๋Š” ์ดˆ๋ณด์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ˆ™๋ จ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํฅ๋ฏธ๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ˜ˆ์•ก, ๋งน์žฅ ๋˜๋Š” ๊นŠ์€ ์นจ์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ญ์‚ฌ์™€ ๊ธฐ๋ณธ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

๋„์ปค๋ž€ ๋ฌด์—‡์ธ๊ฐ€

Wikipedia์—์„œ Docker์˜ ์ •์˜๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Docker๋Š” ์ปจํ…Œ์ด๋„ˆํ™”๋œ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค.

์ด ์ •์˜์—์„œ ๋ช…ํ™•ํ•œ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ํŠนํžˆ "์ปจํ…Œ์ด๋„ˆํ™”๋ฅผ ์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ"๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ๋ถˆ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ๊ฑฐ์Šฌ๋Ÿฌ ์˜ฌ๋ผ๊ฐ€ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ „ํ†ต์ ์œผ๋กœ '๋ชจ๋†€๋ฆฌ์‹ ์‹œ๋Œ€'๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์‹œ๋Œ€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชจ๋†€๋ฆฌ์‹ ์‹œ๋Œ€

๋ชจ๋†€๋ฆฌ์‹ ์‹œ๋Œ€๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜๋งŽ์€ ์ข…์†์„ฑ๊ณผ ํ•จ๊ป˜ ๋ชจ๋†€๋ฆฌ์‹์ด์—ˆ๋˜ 2000๋…„๋Œ€ ์ดˆ๋ฐ˜์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์—๋Š” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์„œ๋ฒ„๊ฐ€ ๋งŽ์ง€ ์•Š์•„ ์šฐ๋ฆฌ ๋ชจ๋‘ ์ด๋ฆ„์„ ์•Œ๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์žฌ๋ฏธ์žˆ๋Š” ๋น„๊ต๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ์™„๋™๋ฌผ์€ ๊ฐ€์ถ•์ด๋‹ค. ๋ชจ๋†€๋ฆฌ์‹ ์‹œ๋Œ€์— ์šฐ๋ฆฌ๋Š” ์„œ๋ฒ„๋ฅผ ์• ์™„๋™๋ฌผ์ฒ˜๋Ÿผ ๋Œ€ํ•˜๊ณ  ์†์งˆํ•˜๊ณ  ์†Œ์ค‘ํžˆ ์—ฌ๊ธฐ๋ฉฐ ๋จผ์ง€๋ฅผ ๋‚ ๋ ค ๋ฒ„๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ๋‚˜์€ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ฐ€์ƒํ™”๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ€์ƒ ๋จธ์‹ ์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ™˜๊ฒฝ์„ ๊ฒฉ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ดํผ๋ฐ”์ด์ € ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ

VMware, VirtualBox, Hyper-V, Qemu KVM ๋“ฑ๊ณผ ๊ฐ™์€ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด์„œ๋Š” ๋ˆ„๊ตฌ๋‚˜ ๋“ค์–ด๋ณด์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฒฉ๋ฆฌ ๋ฐ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ๋‹จ์ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์ƒํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๋ฆฌ์†Œ์Šค ์˜ค๋ฒ„ํ—ค๋“œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ƒ ๋จธ์‹  ์ž์ฒด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜ ์ฒด์ œ, Nginx, Apache ๋ฐ MySQL์„ ํฌํ•จํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ ์ด๋ฏธ์ง€์ธ ์ „์ฒด ๊ฑฐ๋Œ€ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๊ฐ€ ํฌ๊ณ  ๊ฐ€์ƒ๋จธ์‹  ์ž‘๋™์ด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ€์ƒ ๋จธ์‹  ์ž‘์—… ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ปค๋„ ์ˆ˜์ค€์—์„œ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์ด ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

์ปค๋„ ์ˆ˜์ค€ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ

์ปค๋„ ์ˆ˜์ค€ ๊ฐ€์ƒํ™”๋Š” OpenVZ, Systemd-nspawn, LXC ์‹œ์Šคํ…œ์—์„œ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ€์ƒํ™”์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ LXC(Linux Containers)์ž…๋‹ˆ๋‹ค.

LXC๋Š” ๋‹จ์ผ ๋…ธ๋“œ์—์„œ Linux ์šด์˜ ์ฒด์ œ์˜ ๊ฒฉ๋ฆฌ๋œ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์šด์˜ ์ฒด์ œ ์ˆ˜์ค€ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. LXC๋Š” ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž์ฒด ํ”„๋กœ์„ธ์Šค ๊ณต๊ฐ„๊ณผ ๋„คํŠธ์›Œํฌ ์Šคํƒ์œผ๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ LXC๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ญ์‚ฌ์™€ ๊ธฐ๋ณธ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์—์„œ ํ˜ธ์ŠคํŠธ๋กœ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์—์„œ ์ทจ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฒฉ๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฐ€์ƒํ™”์™€ ์ปจํ…Œ์ด๋„ˆํ™”์˜ ์ฐจ์ด์ ์€ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•˜๋“œ์›จ์–ด ํ•˜์ดํผ๋ฐ”์ด์ €, OS ์œ„์— ํ•˜์ดํผ๋ฐ”์ด์ €, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ญ์‚ฌ์™€ ๊ธฐ๋ณธ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

์ •๋ง๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ•˜๋“œ์›จ์–ด ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€์™€ ํ”„๋กœ์„ธ์„œ ์ˆ˜์ค€์—์„œ ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์žˆ๊ณ  ์ปจํ…Œ์ด๋„ˆ๋„ ์žˆ๋Š”๋ฐ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆํ™” ์‹œ์Šคํ…œ์—๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์—†์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์—”์ง„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋” ๊ฐ€๋ณ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”์–ด ์ž‘์—…์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๊ฑฐ๋‚˜ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์ปค๋„ ์ˆ˜์ค€์—์„œ ์ปจํ…Œ์ด๋„ˆํ™”์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ

๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์™€ ๊ฒฉ๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ๊ธฐ์ˆ ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ œ์–ด ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค: 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๋Š” ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  1. Docker Daemon์€ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ ์—”์ง„์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  2. Docker CII๋Š” Docker ๊ด€๋ฆฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค.
  3. Dockerfile - ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค.
  4. ์ด๋ฏธ์ง€ โ€” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋กค์•„์›ƒ๋˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.
  5. ์ปจํ…Œ์ด๋„ˆ.
  6. Docker ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋žต์ ์œผ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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% ๋Šฅ์ˆ™ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์„ธ์š”.

๋„์ปค ํŒŒ์ผ - ์ด๋ฏธ์ง€ ์ƒ์„ฑ ์ง€์นจ. ๊ฑฐ์˜ ๋ชจ๋“  ๋ช…๋ น ๋ช…๋ น์€ ์ƒˆ๋กœ์šด ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

Docker๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์—ญ์‚ฌ์™€ ๊ธฐ๋ณธ ์ถ”์ƒํ™”์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์†Œ๊ฐœ

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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€