🐳 μ»¨ν…Œμ΄λ„ˆ μ„Ένƒμ†Œ: μž¬μ‹œμž‘λ§ŒμœΌλ‘  μ•ˆ λ˜λŠ” λ„μ»€μ˜ κΉŠμ€ 세탁 λΉ„λ°€

WoodyΒ·2025λ…„ 3μ›” 31일

도컀

λͺ©λ‘ 보기
3/3

🐳 μ»¨ν…Œμ΄λ„ˆ μ„Ένƒμ†Œ: μž¬μ‹œμž‘λ§ŒμœΌλ‘  μ•ˆ λ˜λŠ” λ„μ»€μ˜ κΉŠμ€ 세탁 λΉ„λ°€

λ“€μ–΄κ°€λ©°

도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μš΄μ˜ν•˜λ‹€ 보면 가끔 μ΄μƒν•œ 일이 λ°œμƒν•©λ‹ˆλ‹€. "λΆ„λͺ…νžˆ 섀정을 λ°”κΏ¨λŠ”λ° μ™œ 적용이 μ•ˆ λ˜μ§€?" ν•˜λŠ” μˆœκ°„λ“€... 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μž¬μ‹œμž‘ν–ˆλŠ”λ°λ„ λ³€κ²½ 사항이 μ μš©λ˜μ§€ μ•Šμ•„ λ‹Ήν™©μŠ€λŸ¬μ› λ˜ κ²½ν—˜μ΄ μžˆμœΌμ‹ κ°€μš”?

λ‚˜μ˜ 쒌좩우돌 도컀 κ²½ν—˜λ‹΄

졜근 μ €λŠ” Kibana와 Fluentdλ₯Ό μ‚¬μš©ν•˜μ—¬ 둜그 μˆ˜μ§‘ μ‹œμŠ€ν…œμ„ μš΄μ˜ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€. μ–΄λŠ λ‚  Fluentd의 섀정을 일뢀 λ³€κ²½ν•΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€. λ³€κ²½ ν›„ λ‹Ήμ—°νžˆ docker-compose restart둜 μž¬μ‹œμž‘ν•˜λ©΄ 적용될 거라 μƒκ°ν–ˆμ£ . ν•˜μ§€λ§Œ...

λ‹Ήν™©ν•œ 개발자

λ³€κ²½ 사항이 μ μš©λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€! 둜그λ₯Ό ν™•μΈν•΄λ³΄λ‹ˆ λ³Όλ₯¨μ— μ„€μ • 파일이 μ œλŒ€λ‘œ λ³΅μ‚¬λ˜μ§€ μ•Šμ•˜λ˜ κ²λ‹ˆλ‹€. κ²°κ΅­ docker-compose down을 ν•˜κ³  docker-compose up을 ν–ˆλ”λ‹ˆ λͺ¨λ“  것이 정상 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.

"λ„λŒ€μ²΄ 무슨 차이지?" ν•˜λŠ” 의문이 생겼고, 이 차이점을 μ΄ν•΄ν•˜κΈ° μœ„ν•œ 여정이 μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

restart vs down-up: λ„μ»€μ˜ 두 κ°€μ§€ μž¬λΆ€νŒ… 방식

πŸ”„ docker-compose restart

docker-compose restartλŠ” 마치 μ»΄ν“¨ν„°μ˜ 'μž¬λΆ€νŒ…' λ²„νŠΌμ„ λˆ„λ₯΄λŠ” 것과 λΉ„μŠ·ν•©λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ€‘μ§€ν•˜κ³  λ‹€μ‹œ μ‹œμž‘ν•˜μ§€λ§Œ, μ»¨ν…Œμ΄λ„ˆ μžμ²΄λŠ” κ·ΈλŒ€λ‘œ λ³΄μ‘΄ν•©λ‹ˆλ‹€.

  • μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ€‘μ§€ν•œ ν›„ λ™μΌν•œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μž¬μ‹œμž‘ν•©λ‹ˆλ‹€.
  • κΈ°μ‘΄ μ»¨ν…Œμ΄λ„ˆ, λ„€νŠΈμ›Œν¬, λ³Όλ₯¨ 및 섀정이 λͺ¨λ‘ κ·ΈλŒ€λ‘œ μœ μ§€λ©λ‹ˆλ‹€.
  • ν”„λ‘œμ„ΈμŠ€λ§Œ μž¬μ‹œμž‘ν•˜λ―€λ‘œ μž¬μ‹œμž‘ 과정이 λΉ λ¦…λ‹ˆλ‹€.
  • μ€‘μš”: docker-compose.yml νŒŒμΌμ— 변경이 μžˆμ–΄λ„ 이λ₯Ό λ°˜μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • 더 μ€‘μš”: 이미지가 μ—…λ°μ΄νŠΈλ˜μ–΄λ„ μƒˆ 이미지λ₯Ό κ°€μ Έμ˜€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

🧹 docker-compose down ν›„ up

반면 down-up 쑰합은 마치 컴퓨터λ₯Ό μ™„μ „νžˆ 끄고 λ‹€μ‹œ μΌœλŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. λͺ¨λ“  것을 μ œκ±°ν•œ ν›„ μ²˜μŒλΆ€ν„° λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” 것이죠.

  • down λͺ…λ Ήμ–΄λ‘œ ν˜„μž¬ μƒμ„±λœ μ»¨ν…Œμ΄λ„ˆμ™€ λ„€νŠΈμ›Œν¬λ₯Ό λͺ¨λ‘ μ œκ±°ν•©λ‹ˆλ‹€.
  • up λͺ…λ Ήμ–΄λ‘œ μ΅œμ‹  섀정을 λ°”νƒ•μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒˆλ‘œ μƒμ„±ν•˜κ³  μ‹œμž‘ν•©λ‹ˆλ‹€.
  • μ™„μ „νžˆ μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ˜λ―€λ‘œ docker-compose.yml 파일의 λͺ¨λ“  λ³€κ²½ 사항이 λ°˜μ˜λ©λ‹ˆλ‹€.
  • μƒˆ 이미지가 μžˆλ‹€λ©΄ ν’€(pull)ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€(기본적으둜 λ˜λŠ” --pull μ˜΅μ…˜ μ‚¬μš© μ‹œ).
  • λ‹€λ§Œ, μ»¨ν…Œμ΄λ„ˆλ₯Ό μ™„μ „νžˆ μ œκ±°ν•˜κ³  μž¬μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ— μž¬μ‹œμž‘λ³΄λ‹€ μ‹œκ°„μ΄ 더 였래 κ±Έλ¦½λ‹ˆλ‹€.

μ™œ λ‚΄ 섀정은 μ μš©λ˜μ§€ μ•Šμ•˜μ„κΉŒ?

제 κ²½μš°μ—λŠ” Fluentd의 μ„€μ • νŒŒμΌμ„ λ³€κ²½ν–ˆμ§€λ§Œ, 이 λ³€κ²½ 사항이 도컀 λ³Όλ₯¨μ— μ œλŒ€λ‘œ λ°˜μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. restartλŠ” λ‹¨μˆœνžˆ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œ μž¬μ‹œμž‘ν•˜λ―€λ‘œ 이미지λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜κ±°λ‚˜ λ³Όλ₯¨μ„ λ‹€μ‹œ λ§ˆμš΄νŠΈν•˜μ§€ μ•Šμ•˜λ˜ κ²ƒμž…λ‹ˆλ‹€.

반면 down-up 방식은 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ²˜μŒλΆ€ν„° λ‹€μ‹œ μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ—:
1. λͺ¨λ“  λ³Όλ₯¨μ΄ μƒˆλ‘œ λ§ˆμš΄νŠΈλ©λ‹ˆλ‹€
2. docker-compose.yml의 λ³€κ²½ 사항이 μƒˆ μ»¨ν…Œμ΄λ„ˆμ— μ μš©λ©λ‹ˆλ‹€
3. 이미지도 ν•„μš”ν•˜λ‹€λ©΄ λ‹€μ‹œ λΉŒλ“œλ˜κ±°λ‚˜ ν’€λ©λ‹ˆλ‹€

이것이 제 μ„€μ • 변경이 down-up 후에야 적용된 μ΄μœ μž…λ‹ˆλ‹€.

μ–΄λ–€ μƒν™©μ—μ„œ μ–΄λ–€ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•΄μ•Ό ν• κΉŒ?

restartλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  λ•Œ

  • κ°„λ‹¨ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μž¬μ‹œμž‘μ΄ ν•„μš”ν•  λ•Œ
  • μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ ν”„λ‘œμ„ΈμŠ€ 문제만 μžˆμ„ λ•Œ
  • λΉ λ₯Έ μž¬μ‹œμž‘μ΄ ν•„μš”ν•˜κ³  μ„€μ • 변경이 없을 λ•Œ
  • μ„Έμ…˜ 정보 λ“± μ»¨ν…Œμ΄λ„ˆμ˜ ν˜„μž¬ μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  싢을 λ•Œ

down-up을 μ‚¬μš©ν•΄μ•Ό ν•  λ•Œ

  • docker-compose.yml νŒŒμΌμ„ λ³€κ²½ν–ˆμ„ λ•Œ
  • 이미지λ₯Ό μ—…λ°μ΄νŠΈν–ˆμ„ λ•Œ
  • λ³Όλ₯¨ λ§ˆμš΄νŠΈλ‚˜ ν™˜κ²½ λ³€μˆ˜λ₯Ό λ³€κ²½ν–ˆμ„ λ•Œ
  • λ„€νŠΈμ›Œν¬ 섀정을 λ³€κ²½ν–ˆμ„ λ•Œ
  • μ»¨ν…Œμ΄λ„ˆλ₯Ό μ™„μ „νžˆ μ΄ˆκΈ°ν™”ν•˜κ³  싢을 λ•Œ

μœ μš©ν•œ 팁

ν•˜λ‚˜λ§Œ μ•Œκ³  κ°€μž! down λͺ…λ Ήμ–΄μ˜ μ˜΅μ…˜λ“€

docker-compose downμ—λŠ” μ€‘μš”ν•œ μ˜΅μ…˜λ“€μ΄ μžˆμŠ΅λ‹ˆλ‹€:

  • --volumes λ˜λŠ” -v: 이름 μžˆλŠ” λ³Όλ₯¨λ„ ν•¨κ»˜ μ œκ±°ν•©λ‹ˆλ‹€
  • --rmi all: λͺ¨λ“  이미지λ₯Ό μ œκ±°ν•©λ‹ˆλ‹€
  • --remove-orphans: 더 이상 docker-compose.yml에 μ •μ˜λ˜μ§€ μ•Šμ€ μ„œλΉ„μŠ€μ˜ μ»¨ν…Œμ΄λ„ˆλ„ μ œκ±°ν•©λ‹ˆλ‹€

이 μ˜΅μ…˜λ“€μ„ 상황에 맞게 μ‚¬μš©ν•˜λ©΄ 더 κΉ”λ”ν•˜κ²Œ ν™˜κ²½μ„ 정리할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μ • λ³€κ²½ μ‹œ ꢌμž₯ μ›Œν¬ν”Œλ‘œμš°

  1. docker-compose.yml λ˜λŠ” κ΄€λ ¨ μ„€μ • 파일 λ³€κ²½
  2. docker-compose down으둜 κΈ°μ‘΄ μ»¨ν…Œμ΄λ„ˆμ™€ λ„€νŠΈμ›Œν¬ 제거
  3. docker-compose up -d둜 λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μƒˆ μ„€μ •μœΌλ‘œ μ‹œμž‘

마치며

도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ„Ένƒν•˜λŠ” λ°λŠ” 두 κ°€μ§€ 방법이 μžˆμŠ΅λ‹ˆλ‹€. ν‘œλ©΄μ μΈ λ¨Όμ§€λ§Œ ν„Έμ–΄λ‚΄λŠ” 'μž¬μ‹œμž‘ 세탁'κ³Ό μ†κΉŒμ§€ κΉ¨λ—ν•˜κ²Œ ν•˜λŠ” 'μ™„μ „ 세탁(down-up)'. 상황에 λ§žλŠ” μ μ ˆν•œ 세탁 방법을 μ„ νƒν•˜λŠ” 것이 도컀 μ»¨ν…Œμ΄λ„ˆμ˜ κ±΄κ°•ν•œ μš΄μ˜μ„ μœ„ν•œ μ²«κ±ΈμŒμž…λ‹ˆλ‹€.

제 μ‹€μˆ˜ 덕뢄에 μ—¬λŸ¬λΆ„μ€ 이런 문제λ₯Ό 미리 μ˜ˆλ°©ν•  수 있게 λ˜μ—ˆλ„€μš”! ν–‰λ³΅ν•œ 도컀 라이프λ₯Ό μ¦κΈ°μ„Έμš”~ 🐳

profile
ν”„λ‘ νŠΈμ—”λ“œ 개발자둜 μ‚΄μ•„κ°€κΈ°

0개의 λŒ“κΈ€