What are Containers? - accidentlywoo/legacyVue GitHub Wiki

What are Containers?


์ „ํ†ต์ ์ธ ๊ณผ๊ฑฐ์˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ -ใ…ก -์˜์กด์„ฑ(์กด์†์„ฑ) -ใ…ก -์ปค๋„ -ใ…ก -ํ•˜๋“œ์›จ์–ด --> ๋ฐฐํฌ๊นŒ์ง€ ์ˆ˜๊ฐœ์›” ๊ฑธ๋ฆผ, ๋‚ฎ์€ ์ž์› ์ ์œ ์œจ(ํ™œ์šฉ์œจ), ์ด์‹์„ฑ์ด ์—†์Œ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฒ ์–ด๋ฉ”ํƒˆ(Bare - metal)์„œ๋ฒ„์—์„œ ๊ตฌ๋™๋˜์—ˆ์Œ. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์…‹์—… ๊ณผ์ •์ด ํ•„์š”ํ–ˆ์Œ

  1. ํ•˜๋“œ์›จ์–ด์˜ ์„ค์น˜
  2. OS๋˜๋Š” ์ปค๋„(Kernel)์„ค์น˜
  3. ๊ทธ๋ฆฌ๊ณค, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์— ์š”๊ตฌ๋˜๋Š” ์ˆ˜ ๋งŽ์€ ์˜์กด์„ฑ์— ๋Œ€ํ•œ ์„ค์น˜ ๋ฐ ๊ด€ํžˆ
  4. ๋งˆ์ง€๋ง‰์œผ๋กœ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ด ๋ชจ๋“ ๊ฒƒ ์œ„์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Œ

๋ฌธ์ œ์  : ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋‚˜๊ธด ์ผ๋ จ์˜ ์…‹์—…์ด ์™„๋ฃŒ๋œ ์ผํ›„์—๋„ ํ•„์š”ํ•œ ์ง€์†์ ์ธ ์˜์กด์„ฑ ์œ ์ง€/ ๊ด€๋ฆฌ ๋ฐ ๋ชจ๋“ ๊ฒƒ์— ๋Œ€ํ•œ ์‹ฑํฌ๋ฅผ ๋งž์ถ”๊ธฐ๊ฐ€ ์–ด๋ ค์›€ - > ํ•ด๊ฒฐ์ฑ…์œผ๋กœ, VMware๊ฐ€ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐœ๋…์„ ๋„์ž…

ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ

-ใ…กใ…กใ…ก -๊ฐ€์ƒ๋จธ์‹  -์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ -ใ…ก -์˜์กด์„ฑ(์ข…์†์„ฑ) -ใ…ก -์ปค๋„ -ใ…กใ…กใ…ก -ํ•˜๋“œ์›จ์–ด + ํ•˜์ดํผ๋ฐ”์ด์ € --> ๋ฐฐํฌ๊นŒ์ง€ -์ˆ˜์ผ(์ˆ˜๋ถ„)์ด ๊ฑธ๋ฆผ, ํ–ฅ์ƒ๋œ ์ž์› ์ ์œ ์œจ(ํ™œ์šฉ์œจ), ์‚ฌ์šฉ ํ•˜์ดํผ๋ฐ”์ด์ € ์˜์กด์  ์ด์‹์„ฑ

VMware ์ง„์˜์—์„œ, ํ•˜๋“œ์›จ์–ด๋ฅผ ํ•˜์ดํผ๋ฐ”์ด์ง• ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•จ

  • ํ•˜๋“œ์›จ์–ด๋ฅผ ์ปค๋„, ์˜์กด์„ฑ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œํ‚จ๋‹ค๋Š” ์˜๋ฏธ

์ด๋ฅผ ์œ„ํ•ด์„œ, "ํ•˜๋“œ์›จ์–ด ํ•˜์ดํผ๋ฐ”์ด์ €"๋ผ๋Š” ๊ณ„์ธต์ด ๊ฐœ๋ฐœ๋˜๊ณ , ํ•˜๋“œ์›จ์–ด ์œ—๋‹จ์— ์œ„์น˜ํ•œ ๋ชจ๋“  ๊ณ„์ธต๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Œ

  • ์ฆ‰, ํ•œ ๋‹จ๊ณ„์˜ ์ถ”์ƒ ๊ณ„์ธต์ด ๋„์ž…๋œ ๊ฒƒ์ž„

ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ์  1.

-๊ฐ€์ƒ๋จธ์‹  -์•ฑ์ฝ”๋“œ/์•ฑ์ฝ”๋“œ -ใ…ก -์˜์กด์„ฑ(์ข…์†์„ฑ) -ใ…ก -์ปค๋„ -ใ…กใ…กใ…ก

  • ํ•˜๋“œ์›จ์–ด + ํ•˜์ดํผ๋ฐ”์ด์ € --> ๋ฐฐํฌ๊นŒ์ง€ -์ˆ˜์ผ(์ˆ˜๋ถ„) ๊ฑธ๋ฆผ, ์‚ฌ์šฉ ํ•˜์ดํผ๋ฐ”์ด์ € ์˜์กด์  ์ด์‹์„ฑ, ๋‚ฎ์€ ๊ฒฉ๋ฆฌ์„ฑ;OS์— ์˜์กด์ ์ž„

ํ•˜๋‚˜์˜ ๊ฐ€์ƒ๋จธ์‚ฐ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋กœ๋‹ค๋ฅธ ๋ฒ„์ „์œผ๋กœ ์šด์˜๋˜๋Š” ๋™์ผํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ค์น˜/๊ตฌ๋™์ด ๋ถˆ๊ฐ€๋Šฅํ•จ ->์˜์กด์„ฑ ์—๋Ÿฌ๊ฐ€ ์†์ถœํ•˜๊ณ , ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ถฉ๋Œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•จ

์ด ๋ฌธ์ œ์— ๋Œ€ํ•˜์—ฌ, ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ€์ƒ๋จธ์‹ ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฝํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ์Œ

ํ•˜์ดํผ๋ฐ”์ด์ €์— ์˜ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ์˜ ๋ฌธ์ œ์  2

-๊ฐ€์ƒ๋จธ์‹ /๊ฐ€์ƒ๋จธ์‹  -์•ฑ์ฝ”๋“œ/์•ฑ์ฝ”๋“œ -ใ…ก -์˜์กด์„ฑ(์ข…์†์„ฑ)/์˜์กด์„ฑ(์ข…์†์„ฑ) -ใ…ก -์ปค๋„/์ปค๋„ -ใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

  • ํ•˜๋“œ์›จ์–ด + ํ•˜์ดํผ๋ฐ”์ด์ € --> 1. ๋ฐฐํฌ๊นŒ์ง€ -์ˆ˜์ผ(์ˆ˜๋ถ„) ๊ฑธ๋ฆผ, ์‚ฌ์šฉ ํ•˜์ดํผ๋ฐ”์ด์ € ์˜์กด์  ์ด์‹์„ฑ, ๋‚ฎ์€ ๊ฒฉ๋ฆฌ์„ฑ;OS์— ์˜์กด์ ์ž„ --> 2. ๋ฐฐํฌ๊นŒ์ง€ -์ˆ˜์ผ(์ˆ˜๋ถ„) ๊ฑธ๋ฆผ, ์‚ฌ์šฉ ํ•˜์ดํผ๋ฐ”์ด์ € ์˜์กด์  ์ด์‹์„ฑ ๋ณต์ œ๋œ OS

๋ฌด์ˆ˜ํžˆ ๋งŽ์€ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์ƒ์„ฑํ•œ ํ›„, ๋™์ผํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „ ๋˜๋Š” ๋‹จ์ˆœํžˆ ๋ณต์ œ๋œ ๋™์ผ ๋ฒ„์ „์„ ์„ค์น˜/๊ตฌ๋™ ํ•˜์˜€์Œ

์˜์กด์„ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ด์„œ, ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์ˆ˜ ๋งŽ์€ ๊ฐ€์ƒ๋จธ์‹ ์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฌธ์ œ

  • ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ 
  • ๋ชจ๋“ ๋ฉด์—์„œ ๋น„ ํšจ๊ณผ์ ์ด๊ณ 
  • ํ•˜๋“œ์›จ์–ด ์ธก๋ฉด์—์„œ ๋˜ํ•œ ๋น„ ํšจ๊ณผ์ ์ž„ -> ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด Container์ž„

์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ

  • ์ปจํ…Œ์ด๋„ˆ
  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ -ใ…ก
  • ์˜์กด์„ฑ(์ข…์†์„ฑ) -ใ…กใ…กใ…ก
  • ์ปค๋„ + ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ -ใ…ก
  • ํ•˜๋“œ์›จ์–ด --> ๋ฐฐํฌ๊นŒ์ง€ -์ˆ˜๋ถ„(์ˆ˜์ดˆ) ๊ฑธ๋ฆผ, ์ด์‹์„ฑ์ด ์ข‹์Œ, ๋งค์šฐ ํšจ์œจ์ ์ž„

์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„์˜ ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™” ๋ฐฉ์‹

  • ํ•˜๋“œ์›จ์–ด ๊ณ„์ธต๊ณผ์˜ ๋ถ„๋ฆฌ
  • (์ปค๋„, ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„)๊ณ„์ธต๊ณผ์˜ ๋ถ„๋ฆฌ

์ฆ‰, ์œ„ ๋‘ ๊ฐ€์ง€ ๊ณ„์ธต์„ ์–ด๋–ค ์ข…๋ฅ˜๋“ ์ง€๊ฐ„์— ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ์˜์กด์„ฑ์œผ๋กœ ๋ถ€ํ„ฐ ๋ถ„๋ฆฌํ•œ ๊ฒƒ

๋งค์šฐ ์ด์‹์„ฑ์ด ์ข‹๊ณ , ๋งค์šฐ ํšจ์œจ์ ์ธ ์žฅ์ ์„ ๊ฐ€์ง

์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•œ ์„œ๋ฒ„ ํ™˜๊ฒฝ - ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ธ๊ธฐ ์žˆ๋Š” ์ด์œ 

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์–ด๋””์—์„œ๋“ , ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•จ

  • ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ํ”„๋กœ๋•์…˜ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“ 
  • ๋ฒ ์–ด๋ฉ”ํƒˆ, ๊ฐ€์‚ด๋จธ์‹ , ํด๋ผ์šฐ๋“œ ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋“ 

ํŒจํ‚ค์ง€ํ™”๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐœ๋ฐœ ์‹ธ์ดํด์˜ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํšŒ์ „์‹œํ‚ด

  • ์• ์ž์ผํ•œ ์ƒ์„ฑ๊ณผ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅ
  • ์ง€์†์ ์ธ ํ†ตํ•ฉ/๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅ
  • ๋‹จ์ผ ํŒŒ์ผ์˜ ๋ณต์‚ฌ๋งŒ์œผ๋กœ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ์ฃผ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณต

  • ๋ถ„์„ ๊ฐ€๋Šฅ์„ฑ(introspectable)
  • ๊ฒฉ๋ฆฌ์„ฑ(isolated), ํƒ„๋ ฅ์„ฑ(Elastic)

12๋…„์— ๊ฑธ์นœ ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญ์‚ฌ

  • ํ•˜์ดํผ๋ฐ”์ด์ € ์„œ๋ฒ„ ํ™˜๊ฒฝ : ์ œํ•œ๋œ ๊ฒฉ๋ฆฌ (2004)
  • CGroups : ๊ตฌ๊ธ€์ด ๋งŒ๋“  Consistency Groups ๊ธฐ์ˆ ์˜ ์‹œ์ž‘ (2006)
  • LMCTFY Docker : ๋„์ปค์˜ ์‹œ์ž‘ (2013)
  • Kubernetes : ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ์‹œ์ž‘ (2014)

๋„์ปค ์˜ค๋ฒ„๋ทฐ

Dockerfile(๋„์ปคํŒŒ์ผ): ๋„์ปค ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ํ•„์š”

FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

ํ† ์ปคํŒŒ์ผ์€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฌธ์„œ๋กœ, ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น๋“ค์„ ๊ธฐ์ˆ ํ•จ R/W -> Read Write[Thin R/W layer] - ์‹ค์ œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ณ„์ธต ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ๊ณ„์ธต (R/O) R/O -> Read Only

๋„์ปค ์˜ค๋ฒ„๋ทฐ 2

๋„์ปค ์ปจํ…Œ์ด๋„ˆ์™€ ์ด๋ฏธ์ง€์˜ ๊ด€๊ณ„

  • ์ด๋ฏธ์ง€ : ์ผ์ข…์˜ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ…œํ”Œ๋ฆฟ
  • ์ปจํ…Œ์ด๋„ˆ : ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜์˜ ์‹ค์ œ ์‹คํ–‰๊ฐ€๋Šฅํ•œ ์ด๋ฏธ์ง€ ์ธ์Šคํ„ด์Šค

ubuntu๋ผ๋Š” ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋Š” ๊ฑด๋“œ๋ฆด ์ˆ˜ ์—†๋Š” Read Only ๊ณ„์ธต์ž„. ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐ์–ด๋‚ด๊ธฐ ์œ„ํ•œ ํ…œํ”Œ๋ฆฟ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด ๋ณด๋ฉด ๋‹น์—ฐํ•œ ๋‚ด์šฉ.

์ด๋ฏธ์ง€๋ผ๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋™์ผํ•œ ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ฐ์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ. -> ์ธ์Šคํ„ด์Šค๊ฐ€ ๋˜์—ˆ์ง€ ๋•Œ๋ฌธ์—, Read Write๊ฐ€๋Šฅํ•œ ๊ณ„์ธต์ž„.