VM ๋˜๋Š” ๋„์ปค?

VM์ด ์•„๋‹Œ Docker๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•ฉ๋‹ˆ๊นŒ? ์ •ํ™•ํžˆ ๋ฌด์—‡์„ ๊ฒฉ๋ฆฌํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์žฅ๋œ ๋ฆฌ์†Œ์Šค์™€ ๊ฐ€์ƒ ํ•˜๋“œ์›จ์–ด๋กœ ์‹œ์Šคํ…œ์„ ๊ฒฉ๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์„ ํƒ์€ VM์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ„๋„์˜ ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค๋กœ ๊ฒฉ๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Docker๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Docker ์ปจํ…Œ์ด๋„ˆ์™€ VM์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ€์ƒ ๋จธ์‹ (VM) ๊ฐ€์ƒ ์žฅ์น˜ ๋“œ๋ผ์ด๋ฒ„, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋ฐ ๊ธฐํƒ€ ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ•จ๊ป˜ ์ƒˆ๋กœ์šด ๋…๋ฆฝ OS๊ฐ€ ์„ค์น˜๋œ ๋ชจ๋“  ๊ฐ€์ƒ ์žฅ์น˜์™€ ๊ฐ€์ƒ ํ•˜๋“œ ๋””์Šคํฌ๊ฐ€ ์žˆ๋Š” ๊ฐ€์ƒ ์ปดํ“จํ„ฐ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ๋งŽ์€ ๊ฐ€์ƒ ์ปดํ“จํ„ฐ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌผ๋ฆฌ์  ํ•˜๋“œ์›จ์–ด์˜ ์ถ”์ƒํ™”๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
์„ค์น˜๋œ VM์€ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์„œ๋ฒ„์˜ ๊ฐ€์ƒ ๋จธ์‹ ์ด ๋งŽ์„์ˆ˜๋ก ๋” ๋งŽ์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž‘๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์˜ ์ง€์†์ ์ธ ์ง€์›์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋น„์Šทํ•œ ์ด์ ์ด ์žˆ์ง€๋งŒ ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ณต๊ฐ„์„ ๋œ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. VM๋ณด๋‹ค ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ๊ณต์œ  ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. VM๊ณผ ๋‹ฌ๋ฆฌ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์•„๋‹Œ OS ์ˆ˜์ค€์—์„œ ๊ฐ€์ƒํ™”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ๋” ๋น ๋ฅธ ๋ฐฐํฌ ๋ฐ ๋” ์‰ฌ์šด ํ™•์žฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์— ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์บก์Šํ™”๋ฅผ ์œ„ํ•œ ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹œ์Šคํ…œ์˜ ํ•ต์‹ฌ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ž์ฒด ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์„ธํŠธ(์ž์ฒด ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„)๊ฐ€ ์žˆ๋Š” ๊ธฐ๋ณธ OS์˜ ๋ณ„๋„ ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„์€ ๊ณ ์œ ํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์†ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
Docker์˜ ๊ธฐ๋ณธ OS๋Š” Linux(Docker๋Š” Windows ๋ฐ MacOS์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)์ด๋ฉฐ ๋ถ„ํ•  ์ปค๋„์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์ด์ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Windows์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ์˜ ์‹œ์ž‘์€ Linux ๊ฐ€์ƒ ๋จธ์‹  ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ OS๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์š” OS๋Š” Linux์ž…๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ - ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

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

๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฉ”์ธ ์†”๋ฃจ์…˜์ธ docker-compose.yml์— ํฌํ•จ๋œ docker-compose ํ”„๋กœ์ ํŠธ์˜ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„, ํฌํŠธ, ์‹๋ณ„์ž, ๋ฆฌ์†Œ์Šค ์ œํ•œ, ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์˜ ์ข…์†์„ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์ •์—์„œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Docker๋Š” ๋งค๋ฒˆ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž„์˜๋กœ ์ด๋ฆ„์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ด๋ฏธ์ง€์—์„œ ์‹œ์ž‘๋˜๋ฉด Docker๋Š” ์•„๋ž˜ ๋ ˆ์ด์–ด ์œ„์— ์ฝ๊ธฐ/์“ฐ๊ธฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

Docker๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ์ดˆ๊ธฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๊ณ„์ธต์€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ๋ ˆ์ด์–ด์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ํŒŒ์ผ์€ ์•„๋ž˜์˜ ์ฝ๊ธฐ ์ „์šฉ ๋ ˆ์ด์–ด์—์„œ ์ฝ๊ธฐ-์“ฐ๊ธฐ ๋ ˆ์ด์–ด๋กœ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ์˜ ์ฝ๊ธฐ ์ „์šฉ ๋ฒ„์ „์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์กด์žฌํ•˜์ง€๋งŒ ์ด์ œ ๋ณต์‚ฌ๋ณธ ์•„๋ž˜์— ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค. ๋ณผ๋ฅจ์€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋ณผ๋ฅจ์ด ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ์–ด๋–ป๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๋ฏธ์ง€ - ๊ฐ ์ปจํ…Œ์ด๋„ˆ์˜ ์ฃผ์š” ์š”์†Œ. ์ด๋ฏธ์ง€๋Š” ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€๋œ Dockerfile์—์„œ ์ƒ์„ฑ๋˜๋ฉฐ, ํŒŒ์ผ ์‹œ์Šคํ…œ(๊ณ„์ธต) ์ง‘ํ•ฉ์ด ์„œ๋กœ ๊ฒน์ณ์ง€๊ณ  ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”๋˜์–ด ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๋Œ€ ๋ ˆ์ด์–ด ์ˆ˜๋Š” 127๊ฐœ์ž…๋‹ˆ๋‹ค.

๊ฐ ์ด๋ฏธ์ง€์˜ ์ค‘์‹ฌ์—๋Š” Dockerfile ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ง„์ž…์ ์ธ FROM ๋ช…๋ น์œผ๋กœ ์ง€์ •๋˜๋Š” ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ณ„์ธต์€ ์ฝ๊ธฐ ์ „์šฉ ๊ณ„์ธต์ด๋ฉฐ Dockerfile๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ˆ˜์ •ํ•˜๋Š” ๋‹จ์ผ ๋ช…๋ น์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋ ˆ์ด์–ด๋ฅผ ๋‹จ์ผ ์ด๋ฏธ์ง€๋กœ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด Docker๋Š” Advanced multi-layered Union ํŒŒ์ผ ์‹œ์Šคํ…œ(AuFS๋Š” UnionFS ์œ„์— ๊ตฌ์ถ•๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ ๋ ˆ์ด์–ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๊ฒน์น˜๊ฒŒ ํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ ˆ์ด์–ด์—๋Š” ๋Ÿฐํƒ€์ž„ ๋ฐ ๋นŒ๋“œ ์‹œ๊ฐ„์— ๊ฐ ๋ ˆ์ด์–ด์— ๋Œ€ํ•œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ ˆ์ด์–ด์—๋Š” ๋‹ค์Œ ๋ ˆ์ด์–ด์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์ด์–ด์— ๋งํฌ๊ฐ€ ์—†์œผ๋ฉด ์ด๊ฒƒ์ด ์ด๋ฏธ์ง€์˜ ์ตœ์ƒ์œ„ ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.

Dockerfile์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์™€ - ์ด๋ฏธ์ง€ ํ˜•์„ฑ์˜ ์ง„์ž… ์ ;
  • MAINTAINER - ์ด๋ฏธ์ง€ ์†Œ์œ ์ž์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • RUN - ์ด๋ฏธ์ง€ ์กฐ๋ฆฝ ์ค‘ ๋ช…๋ น ์‹คํ–‰;
  • ADD - ํ˜ธ์ŠคํŠธ ํŒŒ์ผ์„ ์ƒˆ ์ด๋ฏธ์ง€์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. URL ํŒŒ์ผ์„ ์ง€์ •ํ•˜๋ฉด Docker๊ฐ€ ํ•ด๋‹น ํŒŒ์ผ์„ ์ง€์ •๋œ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  • ENV - ํ™˜๊ฒฝ ๋ณ€์ˆ˜;
  • CMD - ์ด๋ฏธ์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ENTRYPOINT - ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ๋ช…๋ น์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • WORKDIR์€ CMD ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค.
  • USER - ์ด๋ฏธ์ง€์—์„œ ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ UID๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • VOLUME - ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
  • EXPOSE๋Š” ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ฒญ์ทจํ•˜๋Š” ํฌํŠธ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.

UnionFS๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

์œ ๋‹ˆ์˜จFS โ€” Linux ๋ฐ FreeBSD์šฉ ์„œ๋น„์Šค ์Šคํƒ ํŒŒ์ผ ์‹œ์Šคํ…œ(FS). ์ด FS๋Š” ๊ธฐ๋ก ์ค‘ ๋ณต์‚ฌ(Copy-On-Write, COW) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. UnionFS์˜ ์ž‘์—… ๋‹จ์œ„๋Š” ๊ณ„์ธต์ด๋ฉฐ ๊ฐ ๊ณ„์ธต์€ ๋ฃจํŠธ ์ž์ฒด์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ๋ณ„๋„์˜ ์™„์ „ํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. UnionFS๋Š” ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๋งˆ์šดํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ(๋ธŒ๋žœ์น˜๋ผ๊ณ  ํ•จ)์˜ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋‹จ์ผ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€์ง„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋‚ด์šฉ์€ ๊ฒฐ๊ณผ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํ•˜๋‚˜์˜ ๊ฒฐํ•ฉ๋œ ๋””๋ ‰ํ† ๋ฆฌ(๋™์ผํ•œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด)์— ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

UnionFS๋Š” ๋‹ค์Œ ์›์น™์— ๋”ฐ๋ผ ๋ ˆ์ด์–ด๋ฅผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ ˆ์ด์–ด ์ค‘ ํ•˜๋‚˜๋Š” ์ตœ์ƒ์œ„ ๋ ˆ์ด์–ด๊ฐ€ ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ๋ฐ ํ›„์† ๋ ˆ์ด์–ด๋Š” ํ•˜์œ„ ๋ ˆ์ด์–ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ ˆ์ด์–ด ๊ฐœ์ฒด๋Š” "์œ„์—์„œ ์•„๋ž˜๋กœ" ์‚ฌ์šฉ์ž๊ฐ€ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ๋œ ๊ฐœ์ฒด๊ฐ€ "์ƒ์œ„" ๊ณ„์ธต์— ์žˆ์œผ๋ฉด "ํ•˜์œ„" ๊ณ„์ธต์— ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฐœ์ฒด๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด "ํ•˜๋‹จ" ๋ ˆ์ด์–ด ๊ฐœ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ๋œ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ "No such file or directory" ์˜ค๋ฅ˜๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘์—… ๋ ˆ์ด์–ด๋Š” "์ตœ์ƒ์œ„" ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ž‘์—…์€ ํ•˜์œ„ ๋ ˆ์ด์–ด์˜ ์ฝ˜ํ…์ธ ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ตœ์ƒ์œ„ ๋ ˆ์ด์–ด์—๋งŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

Docker๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์—…์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. Linux ์ปค๋„์ด ์ œ๊ณตํ•˜๋Š” cgroup ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์–ด ์ด ์˜์—ญ์˜ ํ‘œ์ค€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Docker๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„์˜ OS ํ”„๋กœ์„ธ์Šค๋กœ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๊ฐ„์— OS ์ปค๋„์„ ๊ณต์œ ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹ ์†ํ•˜๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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