🐳4. 도컀와 VM

혲·2021λ…„ 5μ›” 3일
0

κΈ°μ‘΄μ—λŠ” λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰μ‹œν‚€κΈ° μœ„ν•΄μ„œ virtual machine(VM)을 μ‚¬μš©ν•˜μ˜€λ‹€.
λ„μ»€λž‘ 차이점이 λ¬΄μ—‡μΌκΉŒ

가상화 기술의 λ“±μž₯

차이점을 μ•ŒκΈ°μ „μ— 가상화 기술이 μ–΄λ–»κ²Œ νƒœμ–΄λ‚˜κ²Œ λ˜μ—ˆλŠ”μ§€ κ°„λ‹¨νžˆ μ•Œμ•„λ³΄μž

1. κ°€μƒν™”κΈ°μˆ  μ „

가상화 기술 μ „μ—λŠ” ν•œλŒ€μ˜ μ„œλ²„λ₯Ό ν•˜λ‚˜μ˜ μš©λ„λ‘œλ§Œ μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— λ‚¨λŠ” μ„œλ²„κ³΅κ°„μ€ κ·ΈλŒ€λ‘œ λ°©μΉ˜λ˜μ—ˆλ‹€.
ν•˜λ‚˜μ˜ μ„œλ²„μ— ν•˜λ‚˜μ˜ 운영체제, ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨λ§Œμ„ μš΄μ˜ν–ˆλ‹€.
μ•ˆμ •μ μ΄μ§€λ§Œ λΉ„νš¨μœ¨μ μ΄κΈ°λ•Œλ¬Έμ— ν•˜μ΄νΌλ°”μ΄μ € 기반의 κ°€μƒκΈ°μˆ μ΄ λ“±μž₯ν•˜κ²Œ λ˜μ—ˆλ‹€

2. ν•˜μ΄νΌ λ°”μ΄μ €μ˜ λ“±μž₯

ν•˜μ΄νΌλ°”μ΄μ €λž€ 호슀트 μ‹œμŠ€ν…œμ—μ„œ λ‹€μˆ˜μ˜ 게슀트 OSλ₯Ό ꡬ동할 수 있게 ν•˜λŠ” μ†Œν”„νŠΈ 웨어, ν•˜λ“œμ›¨μ–΄λ₯Ό κ°€μƒν™”ν•˜λ©΄μ„œ ν•˜λ“œμ›¨μ–΄μ™€ 각각의 VM을 λͺ¨λ‹ˆν„°λ§ν•˜λŠ” 쀑간 κ΄€λ¦¬μžμ˜ 역할을 ν•œλ‹€.
ν•˜μ΄νΌλ°”μ΄μ € μ’…λ₯˜μ—λŠ” native (bare-metal) 와 hosted κ°€ μžˆλ‹€.

native λŠ” μ•„λž˜μ˜ κ·Έλ¦Ό TYPE 1κ³Ό 같이 ν•˜λ“œμ›¨μ–΄μ— 직접 μ„€μΉ˜ν•˜μ—¬ κ΅¬λ™λœλ‹€.
hosted λŠ” κ·Έλ¦Ό TYPE 2 와 같이 OS μœ„μ—μ„œ ν•˜μ΄νΌλ°”μ΄μ €κ°€ μ„€μΉ˜λœ 것을 μ˜λ―Έν•œλ‹€. μš°λ¦¬κ°€ 보톡 μ‚¬μš©ν•˜λŠ” 것이 hosted ν•˜μ΄νΌλ°”μ΄μ €λ‹€


도컀와 VM

그럼 도컀와 ν•˜μ΄νΌλ°”μ΄μ € 기반의 VMκ³ΌλŠ” μ–΄λ–€ 차이가 μžˆμ„κΉŒ?

κ΅¬μ‘°λŠ” λΉ„μŠ·ν•˜μ§€λ§Œ ν™˜κ²½μ„ μ–Όλ§ˆλ‚˜ 격리 μ‹œν‚€λŠ”μ§€ 의 μ°¨μ΄μ—μ„œ λ‚˜νƒ€λ‚œλ‹€.

λ„μ»€λŠ” OS λ₯Ό λ‚΄μž₯ν•˜κ³  μžˆμ§€ μ•Šμ•„ κ°€λ³μ§€λ§Œ VM 은 OSλ₯Ό λ‚΄μž₯ν•˜κ³  μžˆμ–΄ 무겁닀.

VM

  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λ €λ©΄?

    1. VM을 λ„μš°κ³  μžμ›μ„ ν• λ‹Ήν•œλ‹€
    2. 게슀트 OSλ₯Ό λΆ€νŒ…ν•œλ‹€
    3. 게슀트 OSμ—μ„œ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•œλ‹€
    • 도컀 μ»¨ν…Œμ΄λ„ˆμ— λΉ„ν•΄ 훨씬 무겁고 λ³΅μž‘ν•˜λ‹€.
  • 호슀트 μš΄μ˜μ²΄μ œμ™€ λ…λ¦½λ˜μ–΄ μžˆλ‹€.

  • OSκΉŒμ§€ 가상화 ν•΄μ•Ό ν•˜κΈ°λ•Œλ¬Έμ— 크기가 크닀

    • μœˆλ„μš° μœ„μ— λ¦¬λˆ…μŠ€κ°€ μžˆλŠ” 것..

도컀

  • 호슀트 OS μœ„μ— μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹€ν–‰νŒ¨ν‚€μ§€μΈ 이미지λ₯Ό λ°°ν¬ν•˜λ©΄ λœλ‹€.

    • 전체 OSλ₯Ό λ‚΄μž₯ν•  ν•„μš”κ°€ μ—†μ–΄μ„œ 가볍닀(5-100MG)
  • 호슀트 OS에 올리기 λ•Œλ¬Έμ— λ™μΌν•œ 컀널을 κ³΅μœ ν•œλ‹€

    • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μ‹€ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” 호슀트 μ‹œμŠ€ν…œμ—μ„œ 확인이 κ°€λŠ₯ν•˜λ‹€
      • ex) λͺ½κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ©΄ λͺ½κ³  μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€κ°€ μ•„λ‹Œ ν˜ΈμŠ€νŠΈμ—μ„œ ps -e grep mongo λ₯Ό μž…λ ₯해도 λͺ½κ³ λ₯Ό λ³Ό 수 μžˆλ‹€.

도컀 λ‚΄λΆ€ ꡬ쑰

  • 컀널을 κ³΅μœ ν•˜κ³  있음
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ cpuλ‚˜ λ©”λͺ¨λ¦¬κ°€ μ»¨ν…Œμ΄λ„ˆ λ³„λ‘œ κ²©λ¦¬λ˜μ–΄ 있음

λ„μ»€μ˜ 격리 기술

λ„μ»€λŠ” μ–΄λ–€ λ°©μ‹μœΌλ‘œ 격리λ₯Ό ν•˜λŠ” 걸까?
λ¦¬λˆ…μŠ€μ˜ Cgroup(control groups)κ³Ό λ„€μž„μŠ€νŽ˜μ΄μŠ€ (namespaces) 에 λŒ€ν•΄ μ•Œμ•„λ³΄μž

λ„μΌ€μ—μ„œλŠ” Cgroup 와 namespace λ₯Ό μ‚¬μš©ν•œλ‹€
Cgroup와 namespaceλŠ” μ»¨ν…Œμ΄λ„ˆμ™€ ν˜ΈμŠ€νŠΈμ—μ„œ μ‹€ν–‰λ˜λŠ” λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€ 사이에 벽을 λ§Œλ“œλŠ” λ¦¬λˆ…μŠ€ 컀널 κΈ°λŠ₯이닀

Cgroup

  • ν”„λ‘œμ„ΈμŠ€ 그룹의 μ‹œμŠ€ν…œ λ¦¬μ†ŒμŠ€ μ‚¬μš©λŸ‰μ„ κ΄€λ¦¬ν•œλ‹€
  • CPU λ©”λͺ¨λ¦¬, network, bandwith, hd i/o λ“±..
    • μ–΄λ–€ μ–΄ν”Œ μ‚¬μš©λŸ‰μ΄ λ§Žλ‹€λ©΄ κ·Έ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ Cgroup에 λ„£μ–΄μ„œ cpu와 λ©”λͺ¨λ¦¬ μ‚¬μš©μ œν•œμ΄ κ°€λŠ₯ν•˜λ‹€

NameSpace

  • ν•˜λ‚˜μ˜ μ‹œμŠ€ν…œμ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²©λ¦¬μ‹œν‚¬ 수 μžˆλŠ” 가상화 기술
  • λ³„κ°œμ˜ λ…λ¦½λœ 곡간을 μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ 격리된 ν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” κ²½λŸ‰ ν”„λ‘œμ„ΈμŠ€ 가상화 기술

Cgroup와 Name 슀페이슀λ₯Ό 도컀 ν™˜κ²½μ—μ„œ μ“Έ 수 μžˆλŠ” 이유

  • 도컀 버전을 μž…λ ₯ν•˜λ©΄ osκ°€ λ¦¬λˆ…μŠ€λΌκ³  λ‚˜νƒ€λ‚œλ‹€.

  • μ»¨ν…Œμ΄λ„ˆ 뢀뢄에 λ¦¬λˆ…μŠ€ VM이 κΉ”λ € μžˆλ‹€.

  • 즉 λ„μ»€λŠ” λ¦¬λˆ…μŠ€λ‘œ λŒμ•„κ°„λ‹€.

ν•΄λ‹Ή λ‚΄μš©μ€ λ”°λΌν•˜λ©° λ°°μš°λŠ” 도컀와 CIν™˜κ²½ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€ 링크

profile
πŸ’»πŸ“πŸ€―

0개의 λŒ“κΈ€