λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Programming/Docker & Kubernetes

[Docker] (1) 도컀 κ°œλ… μ„€λͺ… | λ„μ»€λŠ” μ™œ μ‚¬μš©ν•˜λŠ” 걸까?

by 뭅즀 2023. 8. 20.
λ°˜μ‘ν˜•
Docker 전체 ν¬μŠ€νŒ…
더보기

[Docker] (1) 도컀 κ°œλ… μ„€λͺ… | λ„μ»€λŠ” μ™œ μ‚¬μš©ν•˜λŠ” 걸까?

[Docker] (2) 도컀 & λ„μ»€μ»΄ν¬μ¦ˆ λ‹€μš΄λ‘œλ“œ

[Docker] (3) 도컀 핡심 κ°œλ… - 이미지, μ»¨ν…Œμ΄λ„ˆ, 도컀 ν—ˆλΈŒ

[Docker] (4) docker pull(이미지 λ‹€μš΄λ‘œλ“œ) & docker run(μ»¨ν…Œμ΄λ„ˆ 생성/μ‹€ν–‰) & ν¬νŠΈν¬μ›Œλ”©(ν¬νŠΈλ§€ν•‘)

[Docker] (5) 도컀 run λͺ…λ Ήμ–΄ μ˜΅μ…˜, 도컀 μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ˜μ§€ μ•Šκ²Œ ν•˜λŠ” 방법

[Docker] (6) 도컀 μ»¨ν…Œμ΄λ„ˆλ‘œ μ ‘μ†ν•˜κΈ° - docker exec & docker attach

[Docker] (7) 도컀 volume(λ³Όλ₯¨) μ˜΅μ…˜ - μ»¨ν…Œμ΄λ„ˆ 폴더와 호슀트 폴더 μ—°κ²°ν•˜κΈ°

[Docker] (8) 도컀 commit(컀밋) & push(ν‘Έμ‹œ) - μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒˆλ‘œμš΄ 도컀 μ΄λ―Έμ§€λ‘œ μ €μž₯ν•˜κ³  λ ˆνΌμ§€ν† λ¦¬μ— μ—…λ‘œλ“œ

[Docker] (9) Dockerfile(λ„μ»€νŒŒμΌ) - μŠ€λ§ˆνŠΈν•˜κ²Œ 도컀 이미지λ₯Ό λΉŒλ“œν•˜λŠ” 방법

[Docker] (10) Dockerfile λΉŒλ“œ μ˜ˆμ‹œ | ENTRYPOINT 와 CMD의 차이

[Docker] (11) 도컀 μ»¨ν…Œμ΄λ„ˆμ™€ vscode μ—°λ™ν•˜κΈ° | 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ 개발

[Docker] (12) κΉƒν—ˆλΈŒλ‘œ 도컀 이미지 κ³΅μœ ν•˜κΈ° | Packages Container Registry

 

Dokcer (도컀)

 

도컀(Docker)λŠ” μ»¨ν…Œμ΄λ„ˆ 기반 가상화 ν”Œλž«νΌμœΌλ‘œ, μ‘μš© ν”„λ‘œκ·Έλž¨κ³Ό κ·Έ 쒅속성을 격리된 ν™˜κ²½μΈ μ»¨ν…Œμ΄λ„ˆλ‘œ νŒ¨ν‚€μ§•ν•˜μ—¬ μ‹€ν–‰ν•˜λŠ” κΈ°μˆ μ΄λ‹€. μ΄λ₯Ό 톡해 μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ„œλ‘œ λ‹€λ₯Έ ν™˜κ²½μ—μ„œλ„ μΌκ΄€λ˜κ²Œ μ‹€ν–‰ν•  수 있고, 개발 ν™˜κ²½κ³Ό 운영 ν™˜κ²½ μ‚¬μ΄μ˜ 차이둜 μΈν•œ 문제λ₯Ό 쀄일 수 μžˆλ‹€. 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 가볍고 λΉ λ₯΄λ©° ν™•μž₯성이 μ’‹μ•„μ„œ 개발 및 배포 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

*μ»¨ν…Œμ΄λ„ˆ : 가상화 κΈ°μˆ μ„ μ΄μš©ν•˜μ—¬ μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό 개발 ν™˜κ²½μ„ 격리된 κ³΅κ°„μ—μ„œ μ‹€ν–‰ν•˜λŠ” λ‹¨μœ„

 

도컀 컴포즈(Docker Compose)λŠ” μ—¬λŸ¬ 개의 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ˜ν•˜κ³  μ‹€ν–‰ν•˜κΈ° μœ„ν•œ λ„κ΅¬λ‘œ, ν•˜λ‚˜μ˜ μ„€μ • 파일둜 μ—¬λŸ¬ 개의 μ»¨ν…Œμ΄λ„ˆλ₯Ό κ΄€λ¦¬ν•˜κ³ , μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ λ„€νŠΈμ›Œν¬ 및 쒅속성을 μ„€μ •ν•˜λŠ” 데 μ‚¬μš©λœλ‹€. 주둜 λ³΅μž‘ν•œ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ„ λ•Œ μ‚¬μš©ν•œλ‹€.

 

 

Virtual Machine vs Docker

μ»¨ν…Œμ΄λ„ˆ 기술이 μ•„λ‹Œ 기쑴의 가상화 방식은 주둜 OSλ₯Ό κ°€μƒν™”ν–ˆλ‹€. VMware, VirtualBox와 같은 가상머신은 호슀트 OS μœ„μ— 게슀트 OS 전체λ₯Ό κ°€μƒν™”ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ„μ»€μ˜ μ»¨ν…Œμ΄λ„ˆ λ°©μ‹κ³ΌλŠ” 큰 차이가 μžˆλ‹€.

 

  • 가상머신
    • 가상머신은 호슀트 운영체제 μœ„μ— κ°€μƒν™”λœ ν•˜λ“œμ›¨μ–΄ 계측을 μƒμ„±ν•˜κ³ , 각 가상 머신은 λ…λ¦½λœ 운영체제, 컀널, λ“œλΌμ΄λ²„ 등을 가짐
    • 이둜 인해 무겁고 높은 μžμ› μ†ŒλΉ„κ°€ ν•„μš”
    • 운영체제의 λΆ€νŒ… 과정이 ν•„μš”ν•˜λ―€λ‘œ μ‹œκ°„μ΄ 였래 κ±Έλ¦Ό
    • λ…λ¦½λœ 운영체제λ₯Ό κ°€μ§€λ―€λ‘œ λ©”λͺ¨λ¦¬, λ””μŠ€ν¬ 곡간 λ“± μžμ›μ„ 많이 μ†ŒλΉ„
  • Docker μ»¨ν…Œμ΄λ„ˆ
    • Docker μ»¨ν…Œμ΄λ„ˆλŠ” 호슀트 운영체제의 컀널을 κ³΅μœ ν•˜λ©°, κ°€λ³κ²Œ 격리된 ν™˜κ²½μ„ 생성
    • 가상 머신보닀 더 κ°€λ²Όμš°λ©° 효율적으둜 μ‹€ν–‰
    • 이미지와 μ»¨ν…Œμ΄λ„ˆ λ ˆμ΄μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ λΉ λ₯΄κ²Œ μƒμ„±λ˜λ©°, μ‹€ν–‰ 속도가 맀우 빠름
    • μ»¨ν…Œμ΄λ„ˆλŠ” 호슀트 운영체제의 컀널을 κ³΅μœ ν•˜λ―€λ‘œ 가볍고 효율적으둜 μžμ›μ„ ν™œμš©

결둠만 μ–˜κΈ°ν•˜λ©΄ κΈ°μ‘΄ 가상머신은 무겁고 λŠλ¦¬μ§€λ§Œ, 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 가볍고 λΉ λ₯΄κ²Œ μ‹€ν–‰λ˜λ©° 호슀트의 운영체제의 컀널을 κ³΅μœ ν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•œλ‹€λŠ” 것이닀. λ˜ν•œ μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포와 관리λ₯Ό 더 효율적으둜 μ²˜λ¦¬ν•  수 μžˆλŠ” 방법을 μ œκ³΅ν•œλ‹€. 

 

도컀λ₯Ό μ‚¬μš©ν•˜λŠ” 이유
  • ν™˜κ²½ μΌμΉ˜μ„±: λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ λ™μΌν•œ μ‹€ν–‰ ν™˜κ²½μ„ 보μž₯ν•œλ‹€. 개발 ν™˜κ²½κ³Ό 운영 ν™˜κ²½μ˜ 차이둜 μΈν•œ 문제λ₯Ό λ°©μ§€ν•˜λ©°, μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ–΄λ””μ„œλ“  μ‹€ν–‰ν•  수 μžˆλ‹€.
  • νŽΈλ¦¬ν•œ 배포: 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” μ΄λ―Έμ§€λ‘œ νŒ¨ν‚€μ§•λ˜μ–΄ λ°°ν¬λ˜λ―€λ‘œ, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ 배포가 간단해진닀. 이미지λ₯Ό κ³΅μœ ν•˜κ±°λ‚˜ 배포할 λ•Œ μš©μ΄ν•˜λ©°, λΉ λ₯Έ ν™•μž₯이 κ°€λŠ₯ν•˜λ‹€.
  • 격리된 ν™˜κ²½: λ„μ»€λŠ” 각 μ»¨ν…Œμ΄λ„ˆλ₯Ό 격리된 ν™˜κ²½μœΌλ‘œ μ‹€ν–‰ν•˜λ―€λ‘œ, ν•˜λ‚˜μ˜ μ»¨ν…Œμ΄λ„ˆμ—μ„œ λ°œμƒν•œ λ¬Έμ œκ°€ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ— 영ν–₯을 주지 μ•ŠλŠ”λ‹€.
  • μžμ› νš¨μœ¨μ„±: 가상 λ¨Έμ‹ κ³Ό 비ꡐ해 더 가볍고 λΉ λ₯΄λ©°, 호슀트 μ‹œμŠ€ν…œμ˜ λ¦¬μ†ŒμŠ€λ₯Ό 효율적으둜 ν™œμš©ν•  수 μžˆλ‹€.
  • μŠ€μΌ€μΌλ§: μ»¨ν…Œμ΄λ„ˆ 기반 μ•„ν‚€ν…μ²˜λŠ” μ‰¬μš΄ μŠ€μΌ€μΌλ§μ΄ κ°€λŠ₯ν•˜μ—¬ μš”κ΅¬μ— 따라 μ‘μš© ν”„λ‘œκ·Έλž¨μ„ ν™•μž₯ν•  수 μžˆλ‹€.
μ–΄λ €μš΄ 말둜 μ„€λͺ…ν–ˆμ§€λ§Œ, κ²°κ΅­ λ„μ»€λž€ κ°œλ°œμ„ νŽΈν•˜κΈ° ν•˜κΈ° μœ„ν•œ 도ꡬ이닀. κ°œλ°œμžμ—κ²Œ 개발 ν™˜κ²½ μ„ΈνŒ…μ΄λž€ 번거럽고 μ‹œκ°„μ΄ 많이 μ†Œμš”λ˜λŠ” μž‘μ—…μ΄λ‹€. 특히 μ—¬λŸ¬ κ°œλ°œμžκ°€ ν˜‘μ—…μ„ ν•˜λŠ” 경우, 각자 λ‹€λ₯Έ μš΄μ˜μ²΄μ œλ‚˜ 라이브러리 λ²„μ „μœΌλ‘œ 인해 μΌκ΄€λœ 개발 ν™˜κ²½μ„ μœ μ§€ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆλ‹€. ν•˜μ§€λ§Œ 도컀λ₯Ό μ‚¬μš©ν•˜λ©΄ 각각의 ν”„λ‘œμ νŠΈλ₯Ό 격리된 μ»¨ν…Œμ΄λ„ˆλ‘œ μ‹€ν–‰ν•˜μ—¬ κ°œλ°œν•  수 μžˆλ‹€. 이둜써 각자의 개발 ν™˜κ²½μ„ κ΅¬μ„±ν•˜λŠ” λ²ˆκ±°λ‘œμ›€μ„ 덜 수 있고, λ”μš± 효율적인 개발과 ν˜‘μ—…μ΄ κ°€λŠ₯ν•΄μ§€λŠ” 것이닀.
 
도컀 μ‚¬μš© μ˜ˆμ‹œ
  • μ›Ή 개발: 도컀λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•˜λ©΄, 개발 ν™˜κ²½μ„ λ™μΌν•˜κ²Œ μ„€μ •ν•˜κ³  λ‹€λ₯Έ νŒ€μ›κ³Όμ˜ ν˜‘μ—…μ„ μš©μ΄ν•˜κ²Œ ν•  수 μžˆλ‹€. 개발 쀑인 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€, 캐싱 μ‹œμŠ€ν…œ 등을 각각의 도컀 μ»¨ν…Œμ΄λ„ˆλ‘œ μ‹€ν–‰ν•˜λ©΄ ν™˜κ²½ μΌμΉ˜μ„±μ„ μœ μ§€ν•˜λ©΄μ„œ μž‘μ—…ν•  수 μžˆλ‹€.
  • μ„œλ²„ 개발: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜μ—μ„œλŠ” 각 μ„œλΉ„μŠ€λ₯Ό 독립적인 도컀 μ»¨ν…Œμ΄λ„ˆλ‘œ κ΅¬μ„±ν•˜μ—¬ κ°œλ°œν•˜κ³  배포할 수 μžˆλ‹€. 각 μ„œλΉ„μŠ€λŠ” λ…λ¦½λœ μ½”λ“œλ² μ΄μŠ€μ™€ 쒅속성을 가지며, κ°œλ³„μ μœΌλ‘œ μŠ€μΌ€μΌλ§μ΄ κ°€λŠ₯ν•˜λ‹€.
  • AI λͺ¨λΈ 개발: AI λͺ¨λΈμ„ κ°œλ°œν•˜κ³  배포할 λ•Œλ„ 도컀λ₯Ό ν™œμš©ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, AI λͺ¨λΈμ„ μ‹€ν–‰ν•˜λŠ” 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜κ³  배포할 수 μžˆλ‹€. 이 μ»¨ν…Œμ΄λ„ˆλŠ” λͺ¨λΈ 좔둠을 μˆ˜ν–‰ν•˜κ³ , ν•„μš”ν•œ 라이브러리 및 쒅속성을 포함할 수 μžˆλ‹€.

 

도컀 μ‚¬μš© 방법
  • 도컀 이미지 λΉŒλ“œ: Dockerfile을 μž‘μ„±ν•˜μ—¬ 도컀 이미지λ₯Ό 생성. μ΄λ―Έμ§€λŠ” μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ ν™˜κ²½μ„ μ •μ˜ν•˜λŠ”λ° μ‚¬μš©λœλ‹€. 예λ₯Ό λ“€μ–΄, μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 경우 μ›Ή μ„œλ²„, ν”„λ ˆμž„μ›Œν¬, 라이브러리 등을 ν¬ν•¨ν•œλ‹€.
  • 도컀 μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰: 이미지λ₯Ό 기반으둜 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰. μ»¨ν…Œμ΄λ„ˆλŠ” 격리된 ν™˜κ²½μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ, 각각의 μ»¨ν…Œμ΄λ„ˆλŠ” λ…λ¦½μ μœΌλ‘œ λ™μž‘ν•œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆ λ„€νŠΈμ›Œν‚Ή: 도컀 μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ 톡신을 μœ„ν•΄ λ„€νŠΈμ›Œν¬ 섀정을 ꡬ성. ν•„μš”ν•œ 경우 ν˜ΈμŠ€νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ 포트 맀핑을 μ„€μ •ν•  수 μžˆλ‹€.
  • μ»¨ν…Œμ΄λ„ˆ 관리: 도컀 컴포즈λ₯Ό μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ˜ν•˜κ³  관리할 수 μžˆλ‹€. 이λ₯Ό 톡해 λ³΅μž‘ν•œ μ•„ν‚€ν…μ²˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΄€λ¦¬ν•˜κΈ° μš©μ΄ν•΄μ§„λ‹€.
  • 이미지 곡유 및 배포: λΉŒλ“œν•œ 이미지λ₯Ό 도컀 λ ˆμ§€μŠ€νŠΈλ¦¬μ— μ—…λ‘œλ“œν•˜κ±°λ‚˜, λ‹€λ₯Έ κ°œλ°œμžμ™€ κ³΅μœ ν•  수 μžˆλ‹€. 배포 μ‹œμ—λŠ” 도컀 이미지λ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜μ—¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  수 μžˆλ‹€.
λ°˜μ‘ν˜•