Study/Docker

๋„์ปค (Docker)

๋ณ˜์ฐŒ 2025. 4. 9. 10:12

๐Ÿณ ๋„์ปค์™€ ๊ฐ€์ƒํ™”

1๏ธโƒฃ ๊ฐ€์ƒํ™” ์ด์ „์˜ ๋ฐฉ์‹

  • ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ด ์ƒ๊ธฐ๊ธฐ ์ด์ „์—๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฌผ๋ฆฌ์  ์ปดํ“จํ„ฐ(์„œ๋ฒ„)์—์„œ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ OS๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ณดํŽธ์ ์ธ ์šด์˜ ๋ฐฉ์‹์ด์—ˆ๋‹ค.
  • ์ด ๋ฐฉ์‹์€ ์•ˆ์ •์ ์ด์—ˆ์ง€๋งŒ ๋‚จ๋Š” ์„œ๋ฒ„ ์ž์›์„ ๋ฐฉ์น˜์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค.
๋”๋ณด๊ธฐ

ํ”„๋กœ์„ธ์Šค

  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋‹จ์œ„๋กœ, ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” OS๋กœ๋ถ€ํ„ฐ ๊ณ ์œ  ๊ณต๊ฐ„(๋ฉ”๋ชจ๋ฆฌ)๋ฅผ ๋ณด์žฅ๋ฐ›๋Š”๋‹ค.
๊ธฐ์กด ๋ฐฉ์‹์—์„œ๋Š” User ๊ณ„์ธต์—์„œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  Kernel ๊ณ„์ธต์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ H/W ๊ณ„์ธต์—์„œ๋Š” CPU์™€ RAM์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

 

2๏ธโƒฃ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ€์ƒํ™” (Hypervisor Virtualization)

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

ํ•˜์ดํผ๋ฐ”์ด์ € ๊ฐ€์ƒํ™”

  • VMware, VirtualBox์™€ ๊ฐ™์€ ๋Œ€ํ‘œ์ ์ธ ๊ฐ€์ƒํ™” ์„œ๋น„์Šค๋„ ์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Host OS ์œ„ ๋‹ค์ˆ˜์˜ Guest OS๋ฅผ ๊ฐ€์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ Guest OS๋ฅผ ๊ฐ€์ƒํ™”์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ๊ธฐ์ˆ ์ ์œผ๋กœ ๋ฌด๊ฑฐ์›Œ์ง€๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
    • ๊ฐ๊ฐ์˜ OS๋“ค์„ ์œ„ํ•ด ๋งค๋ฒˆ ์ž์›์„ ํ• ๋‹น ํ•ด์•ผํ•˜๊ธฐ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์†Œ์š”
    • ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋ฐฐํฌํ•  ๋•Œ, Guest OS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปค๋„ ๋“ฑ์„ ์ „๋ถ€ ํฌํ•จํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ปค์ง„๋‹ค.

3๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™” (Container Virtualization)

  • ์œ„์™€ ๊ฐ™์€ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™”์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ์ˆ , ์ฆ‰ ์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ–ˆ๋‹ค.
๋”๋ณด๊ธฐ

์ปจํ…Œ์ด๋„ˆ

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

์ปจํ…Œ์ด๋„ˆ ๊ฐ€์ƒํ™”

๐Ÿณ ๋„์ปค์˜ ๊ตฌ์„ฑ์š”์†Œ

  1. Docker Daemon
    •  API ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ์ด๋ฏธ์ง€, ์ปจํ…Œ์ด๋„ˆ, ๋„คํŠธ์›Œํฌ ๋ฐ ๋ณผ๋ฅจ๊ณผ ๊ฐ™์€ Docker ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌ
    • ๋‹ค๋ฅธ ๋ฐ๋ชฌ๊ณผ ํ†ต์‹ ํ•˜์—ฌ ๋„์ปค ์„œ๋น„์Šค ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  2. Docker Client
    • ์‚ฌ์šฉ์ž๊ฐ€ Docker Daemon๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐฉ๋ฒ•, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด๋ฅผ ์ „๋‹ฌ/์ˆ˜ํ–‰
    • ๋‘˜ ์ด์ƒ์˜ ๋ฐ๋ชฌ๊ณผ ํ†ต์‹  ๊ฐ€๋Šฅ
  3. Docker Host
    • ๋„์ปค๊ฐ€ ๋„์›Œ์ ธ ์žˆ๋Š” ์„œ๋ฒ„, ์ปจํ…Œ์ด๋„ˆ์™€ ์ด๋ฏธ์ง€ ๊ด€๋ฆฌ
  4. Docekr Image
    • ๊ตฌ๋™์— ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์†Œ์Šค์ฝ”๋“œ ๋“ฑ์„ ํŒจํ‚ค์ง•ํ•œ ํŒŒ์ผ
  5. Docekr Container
    • ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ์‹คํ–‰ํ•œ ์ƒํƒœ, ๋‹จ์ผ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์ˆ˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ตฌ๋™ ๊ฐ€๋Šฅ
  6. Docker Registry
    • ๋„์ปค ์ด๋ฏธ์ง€ ์ €์žฅ์†Œ๋กœ Docker Hub๋Š” ๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœํ˜• Registry
    • docker pull ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๊ฐ€์ ธ์˜จ ์ด๋ฏธ์ง€๋ฅผ docker run ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋œ๋‹ค.
    • docker push ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿณ ๋„์ปค ๋™์ž‘ ์›๋ฆฌ

  1. ์ด๋ฏธ์ง€ ์ž‘์„ฑ : ๊ฐœ๋ฐœ์ž๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
    • ์ด๋ฏธ์ง€๋Š” Docker file์ด๋ผ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ์— ์ •์˜๋˜๋ฉฐ, ์ด ํŒŒ์ผ์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ตฌ์„ฑ ์š”์†Œ, ์ข…์†์„ฑ, ์„ค์ • ๋“ฑ์„ ๊ธฐ์ˆ ํ•œ๋‹ค.
  2. ์ด๋ฏธ์ง€ ๋นŒ๋“œ : ๊ฐœ๋ฐœ์ž๋Š” Docker file์„ ์‚ฌ์šฉํ•ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.
    • ๋„์ปค ์—”์ง„์€ Docker file์„ ์ฝ๊ณ  ์ด๋ฏธ์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ์ด ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„ค์ • ๋“ฑ์ด ์ด๋ฏธ์ง€์— ํฌํ•จ๋œ๋‹ค.
  3. ์ด๋ฏธ์ง€ ๋ฐฐํฌ : ๋นŒ๋“œ๋œ ๋„์ปค ์ด๋ฏธ์ง€๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋˜๊ฑฐ๋‚˜ ๊ณต์œ ๋œ๋‹ค.
    • ๋„์ปค ํ—ˆ๋ธŒ(Docker Hub)๋Š” ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๊ณต๊ฐœ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ด๋‹ค.
    • ๋˜๋Š” ์กฐ์ง ๋‚ด์—์„œ ํ”„๋ผ์ด๋น— ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ : ๊ฐœ๋ฐœ์ž๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€์˜ ์ธ์Šคํ„ด์Šค๋กœ์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„์ด๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€์˜ ์ƒํƒœ๋ฅผ ์บก์ณํ•˜๊ณ , ๋…๋ฆฝ๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—
      ๋Œ€ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค.
  5. ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ : ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค.
    • ๋„์ปค ์—”์ง„์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๊ฒฉ๋ฆฌํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค(๋ฉ”๋ชจ๋ฆฌ, CPU ๋“ฑ)๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • ์ปจํ…Œ์ด๋„ˆ๋Š” ํ˜ธ์ŠคํŠธ ์‹œ์Šคํ…œ๊ณผ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.
  6. ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ฆฌ : ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ํ•„์š”์— ๋”ฐ๋ผ ์‹œ์ž‘, ์ค‘์ง€, ์žฌ์‹œ์ž‘, ์ œ๊ฑฐ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐœ๋ฐœ์ž๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ•„์š”ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ— ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค (Kubernates)

โ€ป ์ถ”๊ฐ€ ์ •๋ฆฌ ์˜ˆ์ •