πŸ³λ„μ»€ 이미지 μ΅œμ ν™” 점수

ν˜„μž¬ 도컀 μ΄λ―Έμ§€μ˜ 크기와 적용된 μ΅œμ ν™” κΈ°μˆ λ“€μ„ μ²΄ν¬ν•˜μ—¬ κ°œμ„  μ—¬λΆ€λ₯Ό ν™•μΈν•˜μ„Έμš”.

적용된 μ΅œμ ν™” ν•­λͺ©

μ΅œμ ν™” μƒνƒœ 점수

40점
뢄석 μ§€ν‘œμƒνƒœ
이미지 λ“±κΈ‰Heavy
μ˜ˆμƒ 절감 κ°€λŠ₯ μš©λŸ‰μ•½ 0 MB

도컀 이미지 κ²½λŸ‰ν™”κ°€ μ€‘μš”ν•œ μ„Έ κ°€μ§€ 이유

μ»¨ν…Œμ΄λ„ˆ 기술의 핡심은 '가볍고 λΉ λ₯Έ 이동성'에 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œ 운영 ν™˜κ²½μ—μ„œλŠ” 수 κΈ°κ°€λ°”μ΄νŠΈ(GB)에 λ‹¬ν•˜λŠ” 무거운 도컀 이미지λ₯Ό μ‚¬μš©ν•˜λŠ” 경우λ₯Ό ν”νžˆ 보게 λ©λ‹ˆλ‹€. 도컀 이미지 μ΅œμ ν™”λŠ” λ‹¨μˆœνžˆ μš©λŸ‰μ„ μ€„μ΄λŠ” μž‘μ—…μ΄ μ•„λ‹™λ‹ˆλ‹€. 첫째, **배포 속도**λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. 이미지가 μž‘μ„μˆ˜λ‘ CI/CD κ³Όμ •μ—μ„œ λ ˆμ§€μŠ€νŠΈλ¦¬μ— ν‘Έμ‹œν•˜κ³  μ„œλ²„λ‘œ μ „μ†‘ν•˜λŠ” μ‹œκ°„μ΄ 획기적으둜 μ€„μ–΄λ“­λ‹ˆλ‹€. λ‘˜μ§Έ, **λ³΄μ•ˆμ„±**μž…λ‹ˆλ‹€. 이미지가 μž‘λ‹€λŠ” 것은 그만큼 ν¬ν•¨λœ νŒ¨ν‚€μ§€κ°€ μ λ‹€λŠ” 뜻이며, μ΄λŠ” κ³΅κ²©μžκ°€ 노릴 수 μžˆλŠ” 취약점(Surface Area)이 μ€„μ–΄λ“œλŠ” 효과λ₯Ό μ€λ‹ˆλ‹€. μ…‹μ§Έ, **λΉ„μš© 절감**μž…λ‹ˆλ‹€. ν΄λΌμš°λ“œ μŠ€ν† λ¦¬μ§€μ™€ λ„€νŠΈμ›Œν¬ 전솑 λΉ„μš©μ„ μ•„λ‚„ 수 μžˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ κ°•λ ₯ν•œ μ΅œμ ν™” μ „λž΅μ€ **λ©€ν‹° μŠ€ν…Œμ΄μ§€ λΉŒλ“œ(Multi-stage build)**μž…λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬λ‚˜ ν…ŒμŠ€νŠΈ 도ꡬ λ“± λΉŒλ“œ λ‹¨κ³„μ—μ„œλ§Œ ν•„μš”ν•œ 무거운 μ˜μ‘΄μ„±λ“€μ„ μ΅œμ’… μ΄λ―Έμ§€μ—μ„œ μ™„μ „νžˆ λ°°μ œν•˜κ³ , 였직 싀행에 ν•„μš”ν•œ λ°”μ΄λ„ˆλ¦¬ 파일만 λ‚¨κΈ°λŠ” λ°©μ‹μž…λ‹ˆλ‹€. λ˜ν•œ `Ubuntu` λŒ€μ‹  `Alpine Linux`와 같은 μ΄ˆκ²½λŸ‰ 베이슀 이미지λ₯Ό μ„ νƒν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ 수백 MB의 μš©λŸ‰μ„ μ¦‰μ‹œ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, λ„μ»€μ˜ λ ˆμ΄μ–΄ 캐싱 원리λ₯Ό 이해해야 ν•©λ‹ˆλ‹€. 자주 λ³€ν•˜λŠ” μ†ŒμŠ€ μ½”λ“œλŠ” Dockerfile의 ν•˜λ‹¨μ— λ°°μΉ˜ν•˜κ³ , 잘 λ³€ν•˜μ§€ μ•ŠλŠ” 라이브러리 μ„€μΉ˜ λ‘œμ§μ€ 상단에 λ°°μΉ˜ν•˜μ—¬ λΉŒλ“œ μ‹œκ°„μ„ 단좕해야 ν•©λ‹ˆλ‹€. λ˜ν•œ μ—¬λŸ¬ 개의 `RUN` λͺ…령을 `&&`둜 μ—°κ²°ν•˜μ—¬ ν•˜λ‚˜μ˜ λ ˆμ΄μ–΄λ‘œ ν•©μΉ˜λŠ” 것도 쒋은 λ°©λ²•μž…λ‹ˆλ‹€. λ³Έ λ„κ΅¬μ—μ„œ μ œκ³΅ν•˜λŠ” 체크리슀트λ₯Ό ν•˜λ‚˜μ”© μ±„μ›Œκ°€λ©°, μ—¬λŸ¬λΆ„μ˜ 이미지λ₯Ό κ°€μž₯ μ™„λ²½ν•œ μƒνƒœλ‘œ μ΅œμ ν™”ν•΄ λ³΄μ„Έμš”.

자주 λ¬»λŠ” 질문 (FAQ)

Q: Alpine 이미지λ₯Ό μ“Έ λ•Œ μ£Όμ˜ν•  점은?

A: Alpine은 glibc λŒ€μ‹  musl libcλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ, 일뢀 C λΌμ΄λΈŒλŸ¬λ¦¬μ— μ˜μ‘΄ν•˜λŠ” νŒ¨ν‚€μ§€λ“€μ΄ 정상 μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우 Pythonμ΄λ‚˜ Node.js용 slim 이미지λ₯Ό λŒ€μ•ˆμœΌλ‘œ κ³ λ €ν•˜μ„Έμš”.

Q: .dockerignoreλŠ” μ™œ ν•„μš”ν•œκ°€μš”?

A: .git ν΄λ”λ‚˜ 둜컬의 node_modules, 둜그 파일 등이 이미지 λΉŒλ“œ μ»¨ν…μŠ€νŠΈμ— ν¬ν•¨λ˜λ©΄ 전솑 속도가 λŠλ €μ§€κ³  이미지 μš©λŸ‰μ΄ λΆˆν•„μš”ν•˜κ²Œ 컀지기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

Q: λ ˆμ΄μ–΄λ₯Ό 무쑰건 μ€„μ΄λŠ” 게 μ’‹λ‚˜μš”?

A: λ ˆμ΄μ–΄κ°€ λ„ˆλ¬΄ 많으면 μ˜€λ²„ν—€λ“œκ°€ λ°œμƒν•˜μ§€λ§Œ, λ°˜λŒ€λ‘œ λ„ˆλ¬΄ 적으면 μΊμ‹œ ν™œμš©λ„κ°€ λ–¨μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. 논리적인 λ‹¨μœ„λ‘œ λ¬Άμ–΄μ£ΌλŠ” 것이 κ°€μž₯ μ’‹μŠ΅λ‹ˆλ‹€.