DevOps/Docker

Docker 01 | 도컀 μ•Œμ•„λ³΄κΈ°

osean 2021. 4. 18. 14:15

λ„μ»€λŠ” μ™œ ν•„μš”ν• κΉŒ?

λ‚˜λŠ” Mac OS ν™˜κ²½μ—μ„œ κ°œλ°œμ„ ν•˜κ³  AλŠ” Windows OS ν™˜κ²½μ—μ„œ κ°œλ°œμ„ ν•˜κ³  BλŠ” Obuntu OS ν™˜κ²½μ—μ„œ κ°œλ°œμ„ ν•˜κ³  μžˆλ‹€κ³  κ°€μ •ν•˜μž. μ΄λ ‡κ²Œ 각자 λ‹€λ₯Έ 운영체제 μœ„μ—μ„œ κ°œλ°œμ„ μ§„ν–‰ν–ˆμ„ λ•Œ, Java 의 경우 JVM μœ„μ—μ„œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— μ–΄λ– ν•œ OSμ—μ„œλ„ μ†μ‰½κ²Œ λΉŒλ“œν•  수 μžˆμ§€λ§Œ 그렇지 μ•Šμ€ 경우라면 λˆ„κ΅¬λŠ” λΉŒλ“œλ₯Ό ν•˜μ§€ λͺ»ν•˜λŠ” κ²½μš°κ°€ λ°œμƒ ν•  수 μžˆλ‹€. λ˜ν•œ, ν˜„μž¬ AWS λ₯Ό μ‚¬μš©ν•˜λ‹€κ°€ 후에 Google Cloud 둜 λ³€κ²½ν•˜λŠ” λ“± μ„œλ²„μ˜ ν™˜κ²½μ΄ λ³€ν•˜λŠ” κ²½μš°λ„ μžˆμ„ 수 있으며 μ–΄λ– ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ λ‹€μ–‘ν•œ μ–Έμ–΄λ‘œ 개발 ν•  수 μžˆλŠ” 상황도 λ°œμƒν•œλ‹€. 이럴 λ•Œ, Docker λ₯Ό μ΄μš©ν•œλ‹€λ©΄ 쑰금 더 μˆ˜μ›”ν•˜κ³  λΉ λ₯΄κ²Œ μ„œλ²„λ₯Ό κ΄€λ¦¬ν•˜κ³  κ°œλ°œμ„ 진행 ν•  수 μžˆλ‹€.

λ„μ»€λ‘œ μ„œλ²„λ₯Ό κ΄€λ¦¬ν•˜λŠ” 것

전톡적인 μ„œλ²„ κ΄€λ¦¬λ‘œλŠ” μ²˜μŒμ— μ„œλ²„λ₯Ό μ„€μ •ν•˜κ²Œ λœλ‹€λ©΄ μœ μ €λ₯Ό μΆ”κ°€ν•˜κ³ , λ°©ν™”λ²½ μ„€μ •, ν™˜κ²½λ³€μˆ˜ μ„€μ • λ“± λ³΅μž‘ν•œ 과정을 거쳐야 μ„œλ²„λ₯Ό 관리 ν•  수 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ 도컀가 λ“±μž₯ν•˜κ³  λ‚˜μ„œ μ»¨ν…Œμ΄λ„ˆ(Container) λΌλŠ” 좔상체λ₯Ό 톡해 μ»¨ν…Œμ΄λ„ˆμ— μ†ν•œ ν”„λ‘œκ·Έλž¨μ„ μš΄μ˜μ²΄μ œμ— ꡬ애 받지 μ•Šκ³  ꡬ동할 수 μžˆλ‹€. 즉, 과거에 μ„œλ²„λ₯Ό κ΄€λ¦¬ν•˜λŠ” 과정이 획기적으둜 μ€„μ–΄λ“€μ—ˆλ‹€κ³  ν•  수 μžˆλ‹€. 도컀와 가상머신과 λΉ„μŠ·ν•˜μ§€λ§Œ κ·Έλ ‡λ‹€κ³  μ™„μ „νžˆ 같은 것은 μ•„λ‹ˆλ‹€.

  1. λ„μ»€λŠ” κ°€μƒλ¨Έμ‹ μ²˜λŸΌ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰λœλ‹€.
  2. ν•˜μ§€λ§Œ 가상머신보닀 λΉ λ₯΄λ‹€.
  3. λ˜ν•œ 가상머신보닀 μ‰¬μš°λ©°
  4. 가상머신보닀 νš¨μœ¨μ μ΄λ‹€.

λ„μ»€μ˜ νŠΉμ§•μ„ μ •λ¦¬ν•˜μžλ©΄

  1. λ›°μ–΄λ‚œ νš¨μœ¨μ„±
    • 가상머신은 μ„œλ²„μ˜ μš΄μ˜μ²΄μ œμ— κ°€μƒμ˜ 운영체제 머신을 λΌμ›Œ λ„£κ²Œ λ˜λ©΄μ„œ μ΄λŠ” μ„±λŠ₯이 λ–¨μ–΄μ§€κ²Œ ν•˜κΈ° λ•Œλ¬Έμ— μ„±λŠ₯상에 문제λ₯Ό μΌμœΌν‚¨λ‹€. ν•˜μ§€λ§Œ λ„μ»€μ˜ 경우 μ„œλ²„μ— κ°€μƒλ¨Έμ‹ μ²˜λŸΌ μž‘λ™ν•˜μ§€ μ•Šκ³ , Docker Engine을 톡해 κ°€μƒμ˜ 운영체제λ₯Ό κ²©λ¦¬μ‹œμΌœ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ— νš¨μœ¨μ„±κ³Ό μ„±λŠ₯λ©΄μ—μ„œ 가상머신에 λΉ„ν•΄ μ••λ„μ μœΌλ‘œ λ›°μ–΄λ‚˜λ‹€.
  2. λ›°μ–΄λ‚œ ν™•μž₯μ„±κ³Ό 이식성
    • 도컀가 μ„€μΉ˜λ˜μ–΄ μžˆλŠ” μ–΄λ– ν•œ ν™˜κ²½μ—μ„œλ„ 도컀 내에 μžˆλŠ” λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλ₯Ό ν™˜κ²½μ— ꡬ애받지 μ•Šκ³  ꡬ동 ν•  수 μžˆλ‹€.
  3. ν‘œμ€€μ„±
    • 각 μ„œλΉ„μŠ€ λ§ˆλ‹€ 개발된 μ–Έμ–΄κ°€ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— λΉŒλ“œν•˜λŠ” 방법, λΉŒλ“œλ˜λŠ” ν™˜κ²½μ΄ 각각 λ‹€λ₯Έλ° λ„μ»€μ˜ μ»¨ν…Œμ΄λ„ˆλΌλŠ” ν‘œμ€€μœΌλ‘œ 각기 λ‹€λ₯Έ μ–Έμ–΄λ‘œ 개발된 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ„œλ²„μ— 배포 ν•  수 μžˆλ‹€.
  4. 이미지
    • μ΄λ―Έμ§€λž€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ μ••μΆ• 파일이라고 μƒκ°ν•˜λ©΄ μ’‹λ‹€.
    • Dockerfile을 μ΄μš©ν•˜μ—¬ 이미지λ₯Ό λ§Œλ“€κ³  μ²˜μŒλΆ€ν„° μž¬ν˜„ κ°€λŠ₯ν•˜λ‹€.
    • λΉŒλ“œ μ„œλ²„μ—μ„œ 이미지λ₯Ό λ§Œλ“€λ©΄ ν•΄λ‹Ή 이미지λ₯Ό 이미지 μ €μž₯솑에 μ €μž₯ν•˜κ³ , μš΄μ˜μ„œλ²„μ—μ„œ 이미지λ₯Ό 뢈러 올 수 μžˆλ‹€.
  5. ν™˜κ²½ λ³€μˆ˜λ₯Ό μ΄μš©ν•œ μ„€μ • 관리
    • ν•˜λ‚˜μ˜ 이미지가 ν™˜κ²½ λ³€μˆ˜μ— 따라 λ™μ μœΌλ‘œ μ„€μ • νŒŒμΌμ„ μƒμ„±ν•˜λ„λ‘ λ§Œλ“€μ–΄μ Έμ•Ό ν•œλ‹€.
  6. μžμ› 관리
    • μ»¨ν…Œμ΄λ„ˆλŠ” μ‚­μ œ ν›„ μƒˆλ‘œ λ§Œλ“€λ©΄ λͺ¨λ“  데이터가 μ΄ˆκΈ°ν™”λœλ‹€.
    • μ—…λ‘œλ“œ νŒŒμΌμ„ μ™ΈλΆ€ μŠ€ν† λ¦¬μ§€μ™€ λ§ν¬ν•˜μ—¬ μ‚¬μš©ν•˜κ±°λ‚˜ AWS S3 λ₯Ό μ΄μš©ν•˜μ—¬ μ €μž₯ν•œλ‹€.
도컀가 κ°€μ Έμ˜¨ λ³€ν™”!
* ν΄λΌμš°λ“œ 이미지보닀 κ΄€λ¦¬ν•˜κΈ° 쉽닀.
* 가상 λ¨Έμ‹ κ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ μ„±λŠ₯μ €ν—ˆκ°€ 거의 μ—†λ‹€.
* 이미지 λΉŒλ“œ 기둝이 λ‚¨μ•„μ„œ 관리가 μš©μ΄ν•˜λ‹€.
* μ½”λ“œμ™€ ν™˜κ²½ λ³€μˆ˜ μ„€μ •μœΌλ‘œ 관리 κ°€λŠ₯ν•˜λ‹€. -> μž¬ν˜„ 및 μˆ˜μ •μ΄ μš©μ΄ν•˜λ‹€.