Docker 🐳

κΉ€κΈ°ν›ˆΒ·2025λ…„ 10μ›” 22일

Docker

λͺ©λ‘ 보기
2/2
post-thumbnail

Docker


  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό κ·Έ μ‹€ν–‰ ν™˜κ²½μ„ ν•˜λ‚˜μ˜ μ»¨ν…Œμ΄λ„ˆλ‘œ λ¬Άμ–΄

    • μ–΄λ””μ„œλ‚˜ λ™μΌν•˜κ²Œ μ‹€ν–‰λ˜λ„λ‘ 보μž₯ν•΄ μ£ΌλŠ” μ˜€ν”ˆ ν”Œλž«νΌ


  • κ°œλ°œμžλŠ” Dockerλ₯Ό μ΄μš©ν•΄ 거의 λͺ¨λ“  ν™˜κ²½μ—μ„œ λ˜‘κ°™μ΄ μ‹€ν–‰λ˜λŠ”, 가볍고 이식성이 λ›°μ–΄λ‚œ μžλ¦½ν˜• μ»¨ν…Œμ΄λ„ˆ

    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ†μ‰½κ²Œ λΉŒλ“œ(build), νŒ¨ν‚€μ§•(package), 배포(deploy), μ‹€ν–‰(run) κ°€λŠ₯
  • Dockerλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•œ 번 μ„€μ •ν•œ 개발 ν™˜κ²½μ„ κ·ΈλŒ€λ‘œ μ»¨ν…Œμ΄λ„ˆμ— 담아두고

    • μ–΄λ””μ„œλ‚˜ λ™μΌν•œ ν™˜κ²½μ„ λΉ λ₯΄κ³  κ°„νŽΈν•˜κ²Œ μ‹€ν–‰ κ°€λŠ₯

Docker Image

  • μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  파일, λ°”μ΄λ„ˆλ¦¬, 라이브러리 및 ꡬ성을

    • ν¬ν•¨ν•˜λŠ” ν‘œμ€€ν™”λœ νŒ¨ν‚€μ§€


  • ex

      1. ν•˜λ‚˜μ˜ κ²Œμž„λ°©μ„ λ§Œλ“€ λ•ŒλŠ” κ²Œμž„ λͺ¨λ“œ, λ§΅, κ·œμΉ™ 등을 μ„ νƒν•˜κ²Œ λ˜λŠ”λ°,
      • μ΄λŸ¬ν•œ 섀정듀이 Docker Image 에 포함
      1. μ΄λ―Έμ§€λŠ” μ–΄λ–€ κ²Œμž„ μ„€μ •μœΌλ‘œ 방을 λ§Œλ“€μ§€ μ •μ˜ν•˜λŠ” 역할을 함
      1. μ΄λ―Έμ§€μ—λŠ” μ»¨ν…Œμ΄λ„ˆκ°€ 싀행될 λ•Œ ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨, 라이브러리, μ„€μ • 등이 λ“€μ–΄μžˆμœΌλ©°,
      • 이미지λ₯Ό 기반으둜 μƒˆλ‘œμš΄ λ°©(μ»¨ν…Œμ΄λ„ˆ)을 λ§Œλ“€ 수 있음
  • MySQL μ„œλ²„λ₯Ό μ΄λ―Έμ§€λ‘œ λ§Œλ“€μ—ˆλ‹€λ©΄ ?

    • 이 이미지λ₯Ό μ‹€ν–‰μ‹œν‚€λ©΄ MySQL μ„œλ²„κ°€ 적용된 μ»¨ν…Œμ΄λ„ˆ(Container) ν™˜κ²½μ—μ„œ μ‹€ν–‰
    • MySQL 을 직접 μ„€μΉ˜ν•  ν•„μš”μ—†μ΄ MySQL λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μš© κ°€λŠ₯

Docker Container

  • μ»¨ν…Œμ΄λ„ˆλŠ” μ•±μ˜ 각 ꡬ성 μš”μ†Œμ— λŒ€ν•œ 격리된 ν”„λ‘œμ„ΈμŠ€

    • μ»¨ν…Œμ΄λ„ˆ μ•ˆμ— λΉŒλ“œ 된 ꡬ성 μš”μ†Œ(ν”„λ‘ νŠΈμ—”λ“œ React μ•±, Python API μ—”μ§„, λ°μ΄ν„°λ² μ΄μŠ€)λŠ”
    • 자체 격리된 ν™˜κ²½μ—μ„œ μ‹€ν–‰λ˜λ©°, 컴퓨터 μ•ˆμ˜ λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨ ν˜Ήμ€ μ‹œμŠ€ν…œκ³Ό μ™„μ „νžˆ 뢄리
  • 독립적인 ν™˜κ²½μ„ κ°€μ§€κ³  μžˆκΈ°μ— 각 μ»¨ν…Œμ΄λ„ˆλ§ˆλ‹€

    • 각자의 μ €μž₯ 곡간(λ””μŠ€ν¬), λ„€νŠΈμ›Œν¬(IP,Port)λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.


  • ex

    • Docker Image : κ²Œμž„ 방의 μ„€μ • / Docker Container : 이미지λ₯Ό μ΄μš©ν•˜μ—¬ μƒμ„±λœ κ²Œμž„μ˜ λ°©
    • κ²Œμž„λ°©λΌλ¦¬λŠ” μ„œλ‘œ κ°„μ„­ν•  수 μ—†λŠ” κ²ƒμ²˜λŸΌ μ»¨ν…Œμ΄λ„ˆλΌλ¦¬λŠ” μ„œλ‘œμ—κ²Œ 영ν–₯을 μ£Όμ§€ μ•ŠμŒ
  • 즉, μ»¨ν…Œμ΄λ„ˆ 내뢀에 각쒅 라이브러리(Django, Gunicorn, Nginx)λ₯Ό μ„€μΉ˜λ₯Ό ν•œ μ»¨ν…Œμ΄λ„ˆλ₯Ό X라고 κ°€μ •

    • λ‹€λ₯Έ μ‚¬λžŒμ΄ Xλ₯Ό κ°€μ Έμ˜€λ©΄ 같은 ν™˜κ²½(같은 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ 쑴재)으둜 개발 κ°€λŠ₯
  • νŠΉμ§•

    • λ…λ¦½ν˜•
      • 각 μ»¨ν…Œμ΄λ„ˆλŠ” 호슀트 λ¨Έμ‹ (둜컬)에 미리 μ„€μΉ˜λœ 쒅속성에 μ˜μ‘΄ν•˜μ§€ μ•Šκ³ λ„
      • μž‘λ™ν•˜λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  것을 κ°–μΆ”κ³  있음
    • 격리됨
      • μ»¨ν…Œμ΄λ„ˆλŠ” κ²©λ¦¬λ˜μ–΄ μ‹€ν–‰λ˜λ―€λ‘œ 호슀트(둜컬)와 λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ— λ―ΈμΉ˜λŠ” 영ν–₯이 μ΅œμ†Œν™”
      • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³΄μ•ˆμ΄ κ°•ν™”
    • 독립적
      • 각 μ»¨ν…Œμ΄λ„ˆλŠ” λ…λ¦½μ μœΌλ‘œ 관리
      • μ»¨ν…Œμ΄λ„ˆ ν•˜λ‚˜λ₯Ό μ‚­μ œν•΄λ„ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŒ
    • νœ΄λŒ€ κ°€λŠ₯
      • μ»¨ν…Œμ΄λ„ˆλŠ” μ–΄λ””μ—μ„œλ‚˜ 싀행될 수 있음
      • 개발 λ¨Έμ‹ μ—μ„œ μ‹€ν–‰λ˜λŠ” μ»¨ν…Œμ΄λ„ˆλŠ” 데이터 μ„Όν„°λ‚˜ ν΄λΌμš°λ“œμ˜ μ–΄λ””μ—μ„œλ‚˜ λ™μΌν•œ λ°©μ‹μœΌλ‘œ μž‘λ™

Docker Engine

  • Docker Engine은 μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜κ³  μ‹€ν–‰ν•˜λ©° κ΄€λ¦¬ν•˜λŠ” 데 ν•„μš”ν•œ

    • λͺ¨λ“  κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” 핡심 μ†Œν”„νŠΈμ›¨μ–΄

      • Docker Engine은 μ΄λŸ¬ν•œ μ„œλ²„ 역할을 ν•˜λŠ” 쀑심 μ‹œμŠ€ν…œ


  • ex

      1. μš°λ¦¬κ°€ κ²Œμž„λ°©(μ»¨ν…Œμ΄λ„ˆ)을 λ§Œλ“€κ³  ν”Œλ ˆμ΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ κ²Œμž„ μ„œλ²„κ°€ ν•„μš”
      1. κ²Œμž„ μ•ˆμ—μ„œ μ—¬λŸ¬ λ°©(μ»¨ν…Œμ΄λ„ˆ)듀이 λ§Œλ“€μ–΄μ§€κ³  각각 λ…λ¦½μ μœΌλ‘œ ν”Œλ ˆμ΄κ°€ 됨
      1. κ²Œμž„ μ„œλ²„λŠ” 각 κ²Œμž„λ°©(μ»¨ν…Œμ΄λ„ˆ)이 μ„œλ‘œ 영ν–₯을 μ£Όμ§€ μ•Šλ„λ‘ 격리
      • μ„œλ‘œ 영ν–₯을 μ£Όμ§€ μ•Šλ„λ‘ 격리 | μžμ›μ„ 관리 | 전체 흐름을 μ œμ–΄ ν•˜λŠ” 역할을 함
  • μ—­ν• 

    • μ‚¬μš©μžκ°€ λ§Œλ“  Docker μ΄λ―Έμ§€λ‘œλΆ€ν„° μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성
    • 각각의 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰, μ •μ§€, μ‚­μ œ, λͺ¨λ‹ˆν„°λ§
    • μžμ›(CPU, λ©”λͺ¨λ¦¬, λ„€νŠΈμ›Œν¬) 을 μ»¨ν…Œμ΄λ„ˆμ— 적절히 ν• λ‹Ήν•˜κ³  관리

λͺ…λ Ήμ–΄

  • docker 싀행쀑인지 확인: docker ps
  • μ»¨ν…Œμ΄λ„ˆ 쀑지: docker stop postgres-container
  • λ‹€μ‹œ μ‹€ν–‰: docker start postgres-container
  • μ™„μ „ μ‚­μ œ: docker rm -f postgres-container
profile
μ•ˆλ…•ν•˜μ„Έμš”.

0개의 λŒ“κΈ€