Container๊ณผ Docker ๐Ÿณ

Lzhtkยท2025๋…„ 6์›” 28์ผ

์˜ค๋Š˜์€ Container ๊ธฐ์ˆ ๊ณผ Container ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜๋Š” ๋„๊ตฌ์ค‘ ํ•˜๋‚˜์ธ Docker๋ฅผ ์•Œ์•„๋ณด์ž โ—โ•


Container ๊ธฐ์ˆ  ๐Ÿ“ฆ

  • Container๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์„ค์ • ํŒŒ์ผ ๋“ฑ์„ ํ•˜๋‚˜์˜ ๋…๋ฆฝ๋œ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด, ์–ด๋””์„œ๋‚˜ ์ผ๊ด€๋˜๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.
    • "ํ•œ ๋ฒˆ ๋งŒ๋“ค๋ฉด ์–ด๋””์„œ๋‚˜ ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰๋œ๋‹ค"๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์šด์˜์ฒด์ œ์˜ ์ˆ˜์ค€ ๊ฐ€์ƒํ™”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ์ˆ ์ด ์‚ฌ์šฉ๋œ๋‹ค.
    • ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” Linux Namespaces
    • ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์ œํ•œํ•˜๋Š” Cgroups
    • ๊ณ„์ธตํ˜• ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๋Š” aufs, overlayfs
  • ์ฐธ๊ณ ๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์€ Docker ๋“ฑ์žฅ ์ด์ „์—๋„ ์กด์žฌํ•˜์˜€๋‹ค.
    • ex ) FreeBSD Jails, Solaris Zones, LXC

Docker ๐Ÿ‹

  • Docker๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ๋ณด๋‹ค ์‰ฝ๊ณ  ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ง„ ํ”Œ๋žซํผ์ด๋‹ค.
  • Docker์˜ ์ฃผ์š” ์—ญํ• 
    • ์ด๋ฏธ์ง€(image) : ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ
    • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(Registry) : ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ
    • ์—”์ง„(Engine) : ์‹ค์ œ๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ํ•ต์‹ฌ ๋Ÿฐํƒ€์ž„
    • ๋„๊ตฌ ์ฒด์ธ : Docker CLI, Docker Compose ๋“ฑ ํŽธ์˜์„ฑ ๋„๊ตฌ
  • Docker์˜ ํ˜์‹ 
    • CLI๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑ, ์‹คํ–‰, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ
    • ์ด๋ฏธ์ง€ ๊ธฐ๋ฐ˜ ๋ฐฐํฌ๋กœ Dev -> Test -> Prod ๊ฐ„ ํ™˜๊ฒฝ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅ
    • ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๊ณ„๋ฅผ ๊ฐœ๋ฐœ์ž ์ค‘์‹ฌ์œผ๋กœ ๋Œ€์ค‘ํ™”์‹œํ‚จ ๊ฒƒ์ด Docker์˜ ๊ฐ€์žฅ ํฐ ๊ณตํ—Œ์ž„
  • Docker๋Š” ๊ธฐ์กด์˜ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ  ์œ„์— ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ UX์™€ ์ƒํƒœ๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•จ์œผ๋กœ์จ ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ์˜ ๋ฌธํ„ฑ์„ ๋‚ฎ์ถ”๋Š” ํฐ ์—ญํ• ์„ ํ•˜์˜€๋‹ค๐ŸŒŠ

์ฆ‰, ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ธฐ์ˆ  ๊ฐœ๋…์ด๊ณ , Docker๋Š” ๊ทธ ๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋„๋ก ๋งŒ๋“  ๋„๊ตฌ์ด๋‹ค.


Docker์™ธ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ๋„๊ตฌ๋“ค

  • ์ปจํ…Œ์ด๋„ˆ๋Š” Docker๋งŒ์œผ๋กœ ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋‹ค์–‘ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์™€ ๋„๊ตฌ๋“ค์ด ์กด์žฌํ•œ๋‹ค.
๋„๊ตฌ๋ช…์„ค๋ช…
LXC (Linux Containers)Docker ์ด์ „์— ๋„๋ฆฌ ์‚ฌ์šฉ๋œ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ตฌํ˜„์ฒด. ๋‚ฎ์€ ์ˆ˜์ค€์˜ ์„ค์ •์ด ํ•„์š”
PodmanDocker์™€ ์œ ์‚ฌํ•œ CLI๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ฐ๋ชฌ๋ฆฌ์Šค(Daemonless) ๊ตฌ์กฐ๋กœ ๋ณด์•ˆ์„ฑ์ด ๋†’์Œ
CRI-OKubernetes๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„. Docker๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ๋Ÿฐํƒ€์ž„
containerdDocker์—์„œ ๋ถ„๋ฆฌ๋œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„. CNCF ํ”„๋กœ์ ํŠธ์ด๋ฉฐ, Kubernetes์—์„œ๋„ ์‚ฌ์šฉ๋จ
rkt (Rocket)CoreOS์—์„œ ๊ฐœ๋ฐœํ•œ ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„(ํ˜„์žฌ๋Š” ๋น„ํ™œ์„ฑํ™”)
  • ์ด์ฒ˜๋Ÿผ ์ปจํ…Œ์ด๋„ˆ ์ƒํƒœ๊ณ„๋Š” Docker ์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„์ฒด์™€ ๋Ÿฐํƒ€์ž„๋“ค์ด ์žˆ์œผ๋ฉฐ, ๋ชฉ์ ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋Ÿฐํƒ€์ž„๋“ค์€ ๋Œ€๋ถ€๋ถ„ Kubernetes์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ํ˜„๋Œ€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” Docker๋ณด๋‹ค containerd, CRI-O๊ฐ€ ๋” ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค.

๋งˆ๋ฌด๋ฆฌ ๐Ÿ”š

์˜ค๋Š˜์€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ๊ณผ ๊ทธ ๊ธฐ์ˆ ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ๋„๊ตฌ์ธ Docker์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.
์ปจํ…Œ์ด๋„ˆ์™€ Docker์˜ ์—ญํ•  ์ดํ•ดํ•˜๊ณ , ์ƒํ™ฉ์— ๋งž๋Š” ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•ด๋ณด์ž ๐Ÿ’ฏ

0๊ฐœ์˜ ๋Œ“๊ธ€