Docker

๋“ค์–ด๊ฐ€๋ฉฐ

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

๋„์ปค๋Š” OS์œ„์—์„œ ๋™์ž‘ํ•˜๋Š”๊ฑฐ ๊ฐ™์€๋ฐ.. ๊ฐ€์ƒ ๋จธ์‹ ์ผ๊นŒ? ํ”„๋กœ์„ธ์Šค(์ปจํ…Œ์ด๋„ˆ)์ผ๊นŒ?

๊ฐ€์ƒ ๋จธ์‹ ์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

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

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ž€?

  • ์šด์˜์ฒด์ œ ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ๋กœ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์„ ๊ณต์œ ํ•˜๋ฉด์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.
  • ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์—๊ฒŒ๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ๊ด€์ ์—์„œ๋Š” ๋งˆ์น˜ ๋…๋ฆฝ์ ์ธ ํ™˜๊ฒฝ์„ ๊ฐ€์ง„ ๊ฐ€์ƒ ๋จธ์‹ ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ์—๋Š” ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ ๊ธฐ์ˆ ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • chroot
    • cgroups
      • ์ž์›์— ๋Œ€ํ•œ ์ œ์–ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ
      • CPU, ๋ฉ”๋ชจ๋ฆฌ, I/O, ๋„คํŠธ์›Œํฌ
    • namespaces
      • ์ปจํ…Œ์ด๋„ˆ ๋ณ„๋กœ ์„œ๋กœ๊ฐ€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ธฐ๋Šฅ
      • ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์„ธ์Šค ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜
      • namespace๊ฐ„ ๋„คํŠธ์›Œํฌ ์ถฉ๋Œ๋ฐฉ์ง€ํ•˜๋Š” ๋“ฑ๋“ฑ์˜ ๊ธฐ๋Šฅ
    • ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ ๊ธฐ์ˆ ์˜ ํ‘œ์ค€์œผ๋กœ ์ •์˜ํ•ด๋‘” OCI(Open Container Initative) ์ŠคํŽ™์„ ๊ตฌํ˜„ํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์˜ ๊ตฌํ˜„์ฒด
      • LXC, LibContainer, runC

์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ€์ƒ ๋จธ์‹ ์€ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?

VM

  • ์ปค๋„์ด ๊ฐ๊ฐ ์†Œ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์— ๋” ๊ฐ•ํ•˜๋‹ค.
  • ๋” ๋งŽ์€ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ ์šด์˜์ฒด์ œ๋ถ€ํ„ฐ ๋ฆฌ๋ถ€ํŒ…์„ ์ง„ํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต๊ตฌ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.

Linux Container

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

์ถ”๊ฐ€์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ปค๋„์„ ๊ณต์œ ํ•œ๋‹ค๋Š”๋ฐ.. ์ปค๋„์˜ต์…˜์€ ์–ด๋–ป๊ฒŒ ์ ์šฉ๋˜๋Š”๊ฒƒ์ธ๊ฐ€?

  • ์˜ˆ์ „์—๋Š” ์šฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ํ˜„์žฌ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋‹ˆ ๊ณต์‹์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.
    • docker ulimit
    • ์ปค๋„ ์˜ต์…˜์ด ๊ณต์œ ๊ฐ€ ๋˜๋Š” ๊ฑด ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š”๋ฐ ์ •ํ™•ํ•˜๊ฒŒ๋Š” ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค..

Reference