[πŸ“° μœ„ν΄λ¦¬νŽ˜μ΄νΌ] Docker

han91Β·2026λ…„ 4μ›” 14일

[μœ„ν΄λ¦¬νŽ˜μ΄νΌ]

λͺ©λ‘ 보기
11/11
post-thumbnail

πŸ“¦ μ»¨ν…Œμ΄λ„ˆ 기술 vs Docker β€” κ°œλ… μ œλŒ€λ‘œ μ΄ν•΄ν•˜κΈ°

🧐 μ»¨ν…Œμ΄λ„ˆ(Container) κΈ°μˆ μ΄λž€?

μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό κ·Έ μ‹€ν–‰ ν™˜κ²½μ„ ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λ‘œ λ¬Άμ–΄μ„œ μ–΄λ””μ„œλ“  λ™μΌν•˜κ²Œ μ‹€ν–‰ν•  수 μžˆλ„λ‘ ν•˜λŠ” 기술

μ‰½κ²Œ λ§ν•˜λ©΄:

πŸ‘‰ β€œλ‚΄ μ»΄ν“¨ν„°μ—μ„œ 되던 게 λ‹€λ₯Έ ν™˜κ²½μ—μ„œλ„ λ˜‘κ°™μ΄ λŒμ•„κ°€κ²Œ λ§Œλ“œλŠ” κΈ°μˆ β€

βœ… 핡심 νŠΉμ§•

  • OS 레벨 가상화
    - VM처럼 OSλ₯Ό ν†΅μ§Έλ‘œ λ„μš°μ§€ μ•ŠμŒ
    - 호슀트 OS 컀널을 곡유
  • λΉ λ₯Έ μ‹€ν–‰ 속도
    - VM보닀 훨씬 가볍고 빠름
  • ν™˜κ²½ 일관성
    - 개발 / ν…ŒμŠ€νŠΈ / 운영 ν™˜κ²½ 차이 문제 ν•΄κ²°

βš™οΈ μ–΄λ–»κ²Œ λ™μž‘ν•˜λ‚˜?

μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ€ Linux의 κΈ°λŠ₯을 기반으둜 ν•œλ‹€:

  • Namespace β†’ ν”„λ‘œμ„ΈμŠ€ 격리
  • Cgroups β†’ μžμ› μ œν•œ (CPU, λ©”λͺ¨λ¦¬)

πŸ‘‰ 즉, μ»¨ν…Œμ΄λ„ˆλŠ” β€œκ°€μƒ 머신”이 μ•„λ‹ˆλΌ
격리된 ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ ν™˜κ²½μ΄λ‹€.

🧐 μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ€ Docker 이전뢀터 쑴재

❗ μ»¨ν…Œμ΄λ„ˆλŠ” Dockerκ°€ λ§Œλ“  κ°œλ…μ΄ μ•„λ‹ˆλ‹€

Docker 이전에도 이미 μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ€ μ‘΄μž¬ν–ˆλ‹€.

πŸ”Ή λŒ€ν‘œμ μΈ 초기 μ»¨ν…Œμ΄λ„ˆ 기술

  • chroot (1979)
    파일 μ‹œμŠ€ν…œ 격리
  • FreeBSD Jails (2000)
    ν”„λ‘œμ„ΈμŠ€ + λ„€νŠΈμ›Œν¬ 격리
  • LXC (2008)
    Linux 기반 μ»¨ν…Œμ΄λ„ˆ 기술 (Docker의 기반)

πŸ‘‰ 즉, DockerλŠ” β€œμ™„μ „νžˆ μƒˆλ‘œμš΄ κΈ°μˆ β€μ΄ μ•„λ‹ˆλΌ
κΈ°μ‘΄ μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ„ 더 μ‰½κ²Œ μ“Έ 수 있게 λ§Œλ“  것이닀.

🧐 Dockerλž€ 무엇인가?


DockerλŠ” μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ„ μ‰½κ²Œ λ§Œλ“€κ³ , λ°°ν¬ν•˜κ³ , μ‹€ν–‰ν•  수 μžˆλ„λ‘ λ§Œλ“  ν”Œλž«νΌ(도ꡬ)이닀.

βœ… Dockerκ°€ ν•œ 일 (핡심)

  1. μ‚¬μš©μ„± κ°œμ„ 
    λ³΅μž‘ν•œ LXCλ₯Ό μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 좔상화
  2. 이미지 κ°œλ… λ„μž…
    μ‹€ν–‰ ν™˜κ²½μ„ 이미지(Image)둜 μ €μž₯
    μž¬μ‚¬μš© κ°€λŠ₯
  3. μƒνƒœκ³„ ꡬ좕
    Docker Hub
    β†’ 이미지 곡유 ν”Œλž«νΌ

πŸ’‘ ν•œ 쀄 정리

μ»¨ν…Œμ΄λ„ˆ = 기술
Docker = κ·Έ κΈ°μˆ μ„ μ‰½κ²Œ μ“°κ²Œ ν•΄μ£ΌλŠ” 도ꡬ


πŸš€ μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜(Container Orchestration)

🧐 μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ΄λž€?

μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ€ μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μžλ™μœΌλ‘œ 배포, 관리, ν™•μž₯ν•˜λŠ” κΈ°μˆ μ΄λ‹€.

μ‰½κ²Œ λ§ν•˜λ©΄:

πŸ‘‰ β€œμ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬λžŒμ΄ 직접 κ΄€λ¦¬ν•˜μ§€ μ•Šκ³  μžλ™μœΌλ‘œ μš΄μ˜ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œβ€


❗ μ™œ ν•„μš”ν•œκ°€?

Docker만 μ‚¬μš©ν•  λ•Œλ₯Ό μƒκ°ν•΄λ³΄μž πŸ‘‡

  • μ»¨ν…Œμ΄λ„ˆ μˆ˜κ°€ λ§Žμ•„μ§€λ©΄ 관리가 μ–΄λ €μ›Œμ§
  • μ„œλ²„κ°€ μ—¬λŸ¬ λŒ€λΌλ©΄ 배포가 λ³΅μž‘ν•΄μ§
  • μž₯μ• κ°€ λ°œμƒν•˜λ©΄ 직접 λŒ€μ‘ν•΄μ•Ό 함

πŸ‘‰ μ‚¬λžŒμ΄ 직접 κ΄€λ¦¬ν•˜κΈ°μ—” ν•œκ³„κ°€ 있음


πŸ†š Docker 단독 μ‚¬μš© vs μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜

ꡬ뢄Docker 단독 μ‚¬μš©μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜
관리 λ°©μ‹μˆ˜λ™μžλ™
ν™•μž₯직접 μ‹€ν–‰ ν•„μš”μžλ™ ν™•μž₯
μž₯μ•  λŒ€μ‘μˆ˜λ™ μž¬μ‹œμž‘μžλ™ 볡ꡬ
배포λͺ…λ Ήμ–΄ κΈ°λ°˜μ„ μ–Έ 기반

πŸ”₯ μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ΄ ν•΄κ²°ν•˜λŠ” 핡심 문제 3κ°€μ§€


1️⃣ μžλ™ ν™•μž₯ (Auto Scaling)

❗ 문제 (Docker만 μ‚¬μš©ν•  경우)

  • νŠΈλž˜ν”½ 증가 μ‹œ μ»¨ν…Œμ΄λ„ˆλ₯Ό 직접 μΆ”κ°€ν•΄μ•Ό 함
  • νŠΈλž˜ν”½ κ°μ†Œ μ‹œ λΆˆν•„μš”ν•œ μ»¨ν…Œμ΄λ„ˆλ„ 계속 μœ μ§€λ¨

πŸ‘‰ μ™„μ „νžˆ μˆ˜λ™ 관리

βœ… ν•΄κ²° (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜)

νŠΈλž˜ν”½μ— 따라 μ»¨ν…Œμ΄λ„ˆ 수λ₯Ό μžλ™μœΌλ‘œ 늘리고 쀄인닀

  • CPU / λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ 기반 μžλ™ ν™•μž₯
  • μš”μ²­λŸ‰ 기반 ν™•μž₯

πŸ‘‰ μ„œλ²„ λΆ€ν•˜ λŒ€μ‘ μžλ™ν™”


2️⃣ μžκ°€ 볡ꡬ (Self-Healing)

❗ 문제 (Docker만 μ‚¬μš©ν•  경우)

  • μ»¨ν…Œμ΄λ„ˆκ°€ 죽으면 μ„œλΉ„μŠ€κ°€ 쀑단됨
  • μ‚¬λžŒμ΄ 직접 μž¬μ‹œμž‘ν•΄μ•Ό 함

βœ… ν•΄κ²° (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜)

μ»¨ν…Œμ΄λ„ˆκ°€ 죽으면 μžλ™μœΌλ‘œ λ‹€μ‹œ μ‹€ν–‰ν•œλ‹€

  • μž₯μ•  감지
  • μžλ™ μž¬μ‹œμž‘
  • λ‹€λ₯Έ μ„œλ²„μ— 재배치

πŸ‘‰ μ„œλΉ„μŠ€ μ•ˆμ •μ„± 확보


3️⃣ 선언적 인프라 (Declarative Infrastructure)

❗ 문제 (Docker만 μ‚¬μš©ν•  경우)

  • docker run, docker stop 같은 λͺ…λ Ήμ–΄λ‘œ 직접 관리해야 함
  • ν˜„μž¬ μƒνƒœλ₯Ό μ‚¬λžŒμ΄ 계속 μ‹ κ²½ 써야 함

πŸ‘‰ λͺ…λ Ήν˜•(Imperative) 방식

βœ… ν•΄κ²° (μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜)

β€œμ–΄λ–€ μƒνƒœκ°€ λ˜μ–΄μ•Ό ν•˜λŠ”μ§€β€λ§Œ μ •μ˜ν•˜λ©΄ μ‹œμŠ€ν…œμ΄ μ•Œμ•„μ„œ λ§žμΆ˜λ‹€

μ˜ˆμ‹œ:

replicas: 3
image: my-app

πŸ‘‰ β€œμ»¨ν…Œμ΄λ„ˆ 3개 μœ μ§€β€λΌκ³  μ„ μ–Έν•˜λ©΄
β†’ μ‹œμŠ€ν…œμ΄ μžλ™μœΌλ‘œ 맞좰쀌


πŸ“¦ λŒ€ν‘œμ μΈ μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 도ꡬ

  • Kubernetes β†’ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ ν”Œλž«νΌ
  • Docker Swarm β†’ Dockerμ—μ„œ μ œκ³΅ν•˜λŠ” μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ κΈ°λŠ₯
  • Apache Mesos β†’ λŒ€κ·œλͺ¨ λΆ„μ‚° μ‹œμŠ€ν…œ 관리 도ꡬ

🎯 μ΅œμ’… 정리

πŸ”₯ 핡심 포인트

  1. μ»¨ν…Œμ΄λ„ˆκ°€ λ§Žμ•„μ§ˆμˆ˜λ‘ μžλ™ 관리 μ‹œμŠ€ν…œμ΄ ν•„μš”ν•˜λ‹€
  2. μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μžλ™μœΌλ‘œ μš΄μ˜ν•˜λŠ” κΈ°μˆ μ΄λ‹€
  3. Docker λ‹¨λ…μœΌλ‘œλŠ” ν™•μž₯, 볡ꡬ, μžλ™ν™”μ— ν•œκ³„κ°€ μžˆλ‹€

πŸ’‘ ν•œ λ¬Έμž₯ 정리

μ»¨ν…Œμ΄λ„ˆ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ€ β€œμ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό μžλ™μœΌλ‘œ κ΄€λ¦¬ν•˜κ³  μš΄μ˜ν•΄μ£ΌλŠ” μ‹œμŠ€ν…œβ€μ΄λ‹€.

profile
μ²œλ°©μ§€μΆ•μ–΄λ¦¬λ‘₯μ ˆλΉ™κΈ€λΉ™κΈ€λŒμ•„κ°€λŠ”κ°œλ°œμž

0개의 λŒ“κΈ€