λ„μ»€λŠ” μ»¨ν…Œμ΄λ„ˆ κΈ°μˆ μ„ 기반으둜 ν•˜λŠ” μΌμ’…μ˜ 가상화 ν”Œλž«νΌμ΄λ‹€.

  • λ¦¬λˆ…μŠ€ μ»¨ν…Œμ΄λ„ˆμ— μ—¬λŸ¬ κΈ°λŠ₯을 μΆ”κ°€ν•¨μœΌλ‘œμ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ»¨ν…Œμ΄λ„ˆλ‘œμ„œ μ’€ 더 μ‰½κ²Œ μ‚¬μš©ν•  수 있게 λ§Œλ“€μ–΄μ§„ μ˜€ν”ˆ ν”„λ‘œμ νŠΈ
  • 기쑴에 μ“°μ΄λ˜ 가상화 방법인 가상 λ¨Έμ‹ (VirturalBox, VMware λ“±) 보닀 μ„±λŠ₯의 손싀이 훨 씬 λœν•˜λ‹€.

가상화 vs μ»¨ν…Œμ΄λ„ˆ

  • 가상 λ¨Έμ‹ (VirturalBox, VMware λ“±)

    • ν•˜λ‚˜μ˜ ν•˜λ“œμ›¨μ–΄μ— μ—¬λŸ¬ 개의 가상 λ¨Έμ‹ μœΌλ‘œ λΆ„ν• ν•΄ 효율적으둜 μ‚¬μš©ν•  수 μžˆλŠ” 기술
    • λΆ„ν•  된 가상 머신듀은 각각 독립적인 ν™˜κ²½μœΌλ‘œ ꡬ동됨
    • κΈ°μ‘΄ ν™˜κ²½( Host OS )
      λΆ„ν•  된 각각의 ν™˜κ²½( Guest OS )
    • Guest OSλŠ” ν•˜μ΄νΌλ°”μ΄μ €μ— μ˜ν•΄ μƒμ„±λ˜κ³  관리됨 β†’ 항상 ν•˜μ΄νΌλ°”μ΄μ €λ₯Ό 거쳐야함
    • 속도 μ €ν•˜,
      가상 λ¨Έμ‹  배포 μ‹œ μ΄λ―Έμ§€μ˜ 크기가 맀우 컀짐,
      ν™˜κ²½ ꡬ좕 파일이 λͺ¨λ‘ λ“€μ–΄κ°€ 있기 λ•Œλ¬Έμ— OS 크기가 맀우큼
  • μ»¨ν…Œμ΄λ„ˆ

    • κ°€μƒμ˜ OSλ₯Ό λ§Œλ“œλŠ” 것이 μ•„λ‹ˆλΌ 베이슀 ν™˜κ²½μ˜ OSλŠ” κ³΅μœ ν•˜λ©΄μ„œ ν•„μš”ν•œ ν”„λ‘œμ„Έλ§Œ 격리
    • 컀널을 κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— Host OS의 κΈ°λŠ₯을 λͺ¨λ‘ μ‚¬μš©ν•  수 있음
    • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— ν•„μš”ν•œ 파일, νŠΉμ • 라이브러리 λ“± 쒅속 ν•­λͺ©λ§Œ 포함 ν•˜κΈ° λ•Œλ¬Έμ— μ΄λ―Έμ§€μ˜ μš©λŸ‰μ΄ 맀우 μž‘μ•„μ§, μš΄μ˜μ²΄μ œκ°€ μ•„λ‹Œ ν”„λ‘œμ„ΈμŠ€μ΄κΈ° λ•Œλ¬Έμ— ν•˜μ΄νΌλ°”μ΄μ €λ₯Ό κ±°μΉ  ν•„μš”κ°€ μ—†μŒ β†’ 속도가 맀우 빨라짐

λ„μ»€μ˜ μž₯점

  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 개발과 배포가 νŽΈν•΄μ§

    • 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” μ„œλ²„ λΆ€νŒ… μ‹œ μ‹€ν–‰λ˜λŠ” 운영체제인 Host OS μœ„μ— μ‹€ν–‰λ˜λŠ” 격리된 곡간
      β†’ μ»¨ν…Œμ΄λ„ˆ μžμ²΄μ— νŠΉλ³„ν•œ κΆŒν•œμ„ 주지 μ•ŠλŠ” ν•œ, μ»¨ν…Œμ΄λ„ˆ 내뢀에 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€μΉ˜ν•˜κ³  μ„€μ • νŒŒμΌμ„ μˆ˜μ •ν•΄λ„ Host OSμ—λŠ” 영ν–₯을 λΌμΉ˜μ§€ μ•ŠμŒ
    • λ…λ¦½λœ 개발 ν™˜κ²½μ„ 보μž₯ 받을 수 있음
    • μž‘μ—…μ„ 마치고 이λ₯Ό μ„œλ²„ ν™˜κ²½μ— 배포할 λ•Œ ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆλ₯Ό β€˜λ„μ»€ 이미지’라고 ν•˜λŠ” μΌμ’…μ˜ νŒ¨ν‚€μ§€λ‘œ λ§Œλ“€μ–΄ μ„œλ²„ ν™˜κ²½μ— μ „λ‹¬ν•˜κΈ°λ§Œ ν•˜λ©΄ 됨
      β†’ 개발 μ‹œ μ‚¬μš©ν–ˆλ˜ ν™˜κ²½μ„ λ‹€λ₯Έ μ„œλ²„μ—μ„œλ„ μ»¨ν…Œμ΄λ„ˆλ‘œμ„œ λ˜‘κ°™μ΄ λ³΅μ œν•  수 있음
    • 도컀 μ΄λ―Έμ§€λŠ” 가상 λ¨Έμ‹ μ˜ 이미지와 달리 컀널을 ν¬ν•¨ν•˜κ³  μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 이미지 크기가 크지 μ•ŠμŒ
    • 이미지 λ‚΄μš©μ„ λ ˆμ΄μ–΄ λ‹¨μœ„λ‘œ κ΅¬μ„±ν•˜μ—¬ μ€‘λ³΅λ˜λŠ” λ ˆμ΄μ–΄λ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 속도가 맀우빨라짐
  • μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 독립성과 ν™•μž₯성이 높아짐

    • λͺ¨λ†€λ¦¬μŠ€(Monolith) μ• ν”Œλ¦¬μΌ€μ΄μ…˜
      • μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ—¬λŸ¬ λͺ¨λ“ˆμ΄ μƒν˜Έ μž‘μš©ν•˜λŠ” λ‘œμ§μ„ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ κ΅¬λ™μ‹œν‚€λŠ” 방식
      • μ†Œκ·œλͺ¨ μ„œλΉ„μŠ€μ—μ„œλŠ” 이 방식이 μ–΄μšΈλ¦΄μ§€λ„ λͺ¨λ₯΄μ§€λ§Œ, μ„œλΉ„μŠ€ κΈ°λŠ₯이 λ³΅μž‘ν•΄μ§€κ³  κ±°λŒ€ν•΄ 질수둝 μ†Œν”„νŠΈμ›¨μ–΄ 자체의 ν™•μž₯μ„±κ³Ό μœ μ—°μ„±μ΄ 쀄어듦
    • 마이크둜 μ„œλΉ„μŠ€(Microservice)
      • μ—¬λŸ¬ λͺ¨λ“ˆμ„ λ…λ¦½λœ ν˜•νƒœλ‘œ κ΅¬μ„±ν•˜κΈ° λ•Œλ¬Έμ— 언어에 μ’…μ†λ˜μ§€ μ•Šκ³  변화에 λΉ λ₯΄κ²Œ λŒ€μ‘ν•  수 있음
      • 각 λͺ¨λ“ˆμ˜ 관리가 μ‰¬μ›Œμ§
      • μ»¨ν…Œμ΄λ„ˆλŠ” 수초 λ‚΄λ‘œ 생성, μ‹œμž‘μ΄ κ°€λŠ₯ν•  뿐만 μ•„λ‹ˆλΌ μ—¬λŸ¬ λͺ¨λ“ˆμ—κ²Œ λ…λ¦½λœ ν™˜κ²½μ„ λ™μ‹œμ— μ œκ³΅ν•  수 있기 λ•Œλ¬Έμ— λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ κ΅¬μ‘°μ—μ„œ κ°€μž₯많이 μ“°μ΄κ³ μžˆλŠ” 가상화 κΈ°μˆ μž„

도컀 엔진(Docker Engine)

  • λ„μ»€λŠ” λ¦¬λˆ…μŠ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ œμ–΄ν•˜λŠ” APIλ₯Ό Goμ–Έμ–΄λ‘œ κ΅¬ν˜„ν•œ libcontainerλ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— λŒ€λΆ€λΆ„μ˜ λ¦¬λˆ…μŠ€ μš΄μ˜μ²΄μ œμ—μ„œ μ‚¬μš©ν•  수 있음
    β†’ λŒ€ν‘œμ μΈ λ¦¬λˆ…μŠ€ μš΄μ˜μ²΄μ œλ‘œλŠ” CentOS, μš°λΆ„νˆ¬ 등이 있음

도컀 이미지

  • μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 λ•Œ ν•„μš”ν•œ μš”μ†Œ

  • μ—¬λŸ¬ 개의 κ³„μΈ΅μœΌλ‘œ 된 λ°”μ΄λ„ˆλ¦¬ 파일둜 쑴재

  • μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜κ³  μ‹€ν–‰ν•  λ•Œ 읽기 μ „μš©μœΌλ‘œ μ‚¬μš©λ¨

  • μ΄λ―Έμ§€λŠ” 도컀 λͺ…λ Ήμ–΄λ‘œ 내렀받을 수 μžˆμœΌλ―€λ‘œ λ³„λ„λ‘œ μ„€μΉ˜ν•  ν•„μš” μ—†μŒ

  • [μ €μž₯μ†Œ 이름]/[이미지 이름]:[νƒœκ·Έ]의 ν˜•νƒœλ‘œ ꡬ성

    • μ €μž₯μ†Œ(Repository) : 이미지가 μ €μž₯된 μž₯μ†Œ (μƒλž΅κ°€λŠ₯)
    • 이미지 이름 : ν•΄λ‹Ή μ΄λ―Έμ§€μ˜ 역할을 λ‚˜νƒ€λƒ„ (μƒλž΅λΆˆκ°€)
    • νƒœκ·Έ : μ΄λ―Έμ§€μ˜ 버전 관리, ν˜Ήμ€ 리비전(Revision) 관리에 μ‚¬μš© (μƒλž΅ μ‹œ latest둜 인식함)

도컀 λͺ…λ Ήμ–΄λ‘œ μ»¨ν…Œμ΄λ„ˆ 닀루기

πŸ“™ 도컀 버전확인

# docker -v

πŸ“™ 도컀 이미지 λ‹€μš΄λ§Œ λ°›κΈ°

docker pull {이미지λͺ…}:{νƒœκ·Έ}
# 예: docker pull python:3

πŸ“™ λ„μ»€νŒŒμΌλ‘œ 이미지 생성

// Dockerfile 파일이 μžˆλŠ” 디렉토리 κΈ°μ€€.  λ§ˆμ§€λ§‰μ˜ . 이 μƒλŒ€μ£Όμ†Œ
# docker build -t {이미지λͺ…} .

πŸ“™ μ»¨ν…Œμ΄λ„ˆ 생성

run : 생성과 λ™μ‹œμ— μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€λ‘œ 듀어감
β†’ start, attach μ‹€ν–‰

# docker run -i -t [이미지이름:νƒœκ·Έ]

create : μ»¨ν…Œμ΄λ„ˆλ§Œ μƒμ„±ν•˜κ³  λ‚΄λΆ€λ‘œ μ•ˆ 듀어감
β†’ 도컀 이미지λ₯Ό pull ν•œ λ’€ μ»¨ν…Œμ΄λ„ˆλ§Œ 생성 ν•  뿐 start, attach μ‹€ν–‰ν•˜μ§€ μ•ŠμŒ

# docker create -i -t {μ˜΅μ…˜ (ex)--name [생성할 이름]} [이미지이름:νƒœκ·Έ]

start , attach

// λ§Œλ“€μ–΄μ§„ μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘ν•˜κΈ°(이미지에 CMD둜 지정해놓은 μž‘μ—… μ‹œν‚€κΈ°
# docker start [μ»¨ν…Œμ΄λ„ˆμ΄λ¦„]

// μ»¨ν…Œμ΄λ„ˆλ‘œ λ“€μ–΄κ°€κΈ°(μ»¨ν…Œμ΄λ„ˆ λ‚΄ CLI μ‚¬μš©ν•˜κΈ°)
# docker attach [μ»¨ν…Œμ΄λ„ˆμ΄λ¦„]

-i , -t μ˜΅μ…˜

-i : μƒν˜Έ μž…/좜λ ₯
-t : tty ν™œμ„±ν™”ν•΄μ„œ λ°°μ‹œ(bash) 셸을 μ‚¬μš©ν•˜λ„λ‘ μ»¨ν…Œμ΄λ„ˆ μ„€μ •

# bdocker run μ‚¬μš© μ‹œ 이 두 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ 셸을 μ •μƒμ μœΌλ‘œ μ‚¬μš©ν•  수 μ—†μŒ

πŸ“™ λ™μž‘μ€‘μΈ μ»¨ν…Œμ΄λ„ˆ μž¬μ‹œμž‘

# docker restart {μ»¨ν…Œμ΄λ„ˆ id λ˜λŠ” 이름}

πŸ“™ νŒŒμΌμ‹œμŠ€ν…œ 확인

ls

πŸ“™ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ λ‚˜μ˜€κΈ°

// μ»¨ν…Œμ΄λ„ˆ 정지 μ‹œν‚€λ©΄μ„œ λΉ μ Έλ‚˜μ˜€κΈ°
exit 

Ctrl + D
// 정지 μ•ˆν•˜κ³  λΉ μ Έλ‚˜μ˜€κΈ°
Ctrl + P, Q

πŸ“™ 도컀 엔진에 μ‘΄μž¬ν•˜λŠ” 이미지 λͺ©λ‘

# docker images

πŸ“™ μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘

// μ •μ§€λ˜μ§€ μ•Šμ€ μ»¨ν…Œμ΄λ„ˆλ§Œ 좜λ ₯
# docker ps

// μ •μ§€λœ μ»¨ν…Œμ΄λ„ˆλ„ λͺ¨λ‘ ν¬ν•¨ν•˜μ—¬ 좜λ ₯(-a μ˜΅μ…˜)
# docker ps -a
CONTAINER ID   IMAGE                              COMMAND                  CREATED        STATUS        PORTS                                                  NAMES
8828a383f936   ubuntu:22.04                       "bash"                   25 hours ago   Up 25 hours                                                          hopeful_lovelace
  • CONTAINER ID : μ»¨ν…Œμ΄λ„ˆμ—κ²Œ μžλ™μœΌλ‘œ ν• λ‹Ήλ˜λŠ” κ³ μœ ν•œ ID
    β‡’docker ps μ—μ„œλŠ” ID μΌλΆ€λΆ„λ§Œ 좜λ ₯λ˜λŠ”λ° μ»¨ν…Œμ΄λ„ˆ 정보λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄μ„ 
    - # docker inspect [μ»¨ν…Œμ΄λ„ˆ 이름] | grep Id μ‚¬μš©ν•˜μ—¬ ν’€ ID 확인 κ°€λŠ₯
  • IMAGE : μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성할 λ•Œ μ‚¬μš©λœ 이미지 이름
  • COMMAND : μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ  λ•Œ 싀행될 λͺ…λ Ήμ–΄
    β‡’ λŒ€λΆ€λΆ„ 이미지에 미리 λ‚΄μž₯돼있기 λ•Œλ¬Έμ— 별도 섀정은 ν•„μš”μ—†μŒ
  • CREATED : μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ˜κ³  λ‚œ λ’€ 흐λ₯Έ μ‹œκ°„
  • STATUS : μ»¨ν…Œμ΄λ„ˆμ˜ μƒνƒœ
    • Exited… 정지 μƒνƒœ
    • UP …seconds 싀행쀑 μƒνƒœ
    • Pause 쀑지 μƒνƒœ
  • PORTS : μ»¨ν…Œμ΄λ„ˆκ°€ κ°œλ°©ν•œ ν¬νŠΈμ™€ ν˜ΈμŠ€νŠΈμ— μ—°κ²°ν•œ 포트λ₯Ό λ‚˜μ—΄ν•¨
  • NAMES : μ»¨ν…Œμ΄λ„ˆμ˜ κ³ μœ ν•œ 이름
    β‡’ --name μ˜΅μ…˜μœΌλ‘œ 이름을 μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 도컀 엔진이 μž„μ˜λ‘œ ν˜•μš©μ‚¬μ™€ λͺ…사λ₯Ό λ¬΄μž‘μœ„ μ‘°ν•©ν•΄ 이름을 섀정함
    β‡’ docker rename [κΈ°μ‘΄μ»¨ν…Œμ΄λ„ˆμ΄λ¦„] [λ³€κ²½ν• μ»¨ν…Œμ΄λ„ˆμ΄λ¦„] μ‚¬μš©ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆ 이름 λ³€κ²½ κ°€λŠ₯

πŸ“™ μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

# docker rm

// 싀행쀑인 μ»¨ν…Œμ΄λ„ˆλŠ” μ‚­μ œ λΆˆκ°€ν•˜μ—¬ stop λͺ…λ Ήμ–΄λ‘œ 쀑지 μ‹œν‚¨ ν›„ μ‚­μ œ
# docker stop mycentos
# docker rm mycentos

// 싀행쀑인 μ»¨ν…Œμ΄λ„ˆ λ°”λ‘œ μ‚­μ œ
# docker rm -f mycentos

// λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ ν•œλ²ˆμ— μ‚­μ œ
# docker container prune
# docker ps -a -q 
-> -a : μ»¨ν…Œμ΄λ„ˆ μƒνƒœμ™€ 관계없이 λͺ¨λ“ μ»¨ν…Œμ΄λ„ˆ / -q : μ»¨ν…Œμ΄λ„ˆ ID만 좜λ ₯

// μ»¨ν…Œμ΄λ„ˆμ˜ μ‹€ν–‰ μƒνƒœμ™€ 관계없이 λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ§€ν•˜κ³  μ‚­μ œ
# docker stop $(docker ps -a -p)
# docker rm $(docker ps -a -q)

πŸ“™ rmi : 이미지 μ‚­μ œ

# docker rmi {μ˜΅μ…˜} {이미지 id}

πŸ“™ exec : 이미 μ‹€ν–‰λœ νŠΉμ • μ»¨ν…Œμ΄λ„ˆ ν™˜κ²½μ„ λ””λ²„κΉ…ν•˜λŠ” μš©λ„

# docker exec [μ»¨ν…Œμ΄λ„ˆID] [COMMAND]
// ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆ ID μ‹€ν–‰ ν›„ COMMAND λͺ…λ Ήμ–΄ μ‹€ν–‰

# docker run 은 μƒˆλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜λŠ” μš©λ„

πŸ“™ logs : 도컀 둜그 확인

# docker logs [μ»¨ν…Œμ΄λ„ˆID]

πŸ“™ link : μ•žμ—μ„œ --name 으둜 λ„μš΄ μ»¨ν…Œμ΄λ„ˆμ™€ μ—°λ™ν•˜λŠ” 것

도컀 포트 μ„€μ •


좜처 : https://youtu.be/SJFO2w5Q2HI μƒν™œμ½”λ”©μœ νŠœλΈŒ

  • μ»¨ν…Œμ΄λ„ˆλŠ” 가상 λ¨Έμ‹ κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 가상 IP μ£Όμ†Œλ₯Ό ν• λ‹Ήλ°›μŒ ( 172.17.0.x 의 IPλ₯Ό 순차적으둜 )

πŸ“™ μ»¨ν…Œμ΄λ„ˆμ˜ λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 확인

# ifconfig

πŸ“™ -p : μ»¨ν…Œμ΄λ„ˆμ˜ 포트λ₯Ό 호슀트의 ν¬νŠΈμ™€ 바인딩해 μ—°κ²°ν•  수 있게 μ„€μ •

# -p [호슀트의 포트]:[μ»¨ν…Œμ΄λ„ˆμ˜ 포트]
// 예) 7777:80 -> 호슀트의 7777번 포트λ₯Ό μ»¨ν…Œμ΄λ„ˆ 80번 ν¬νŠΈμ™€ μ—°κ²°

# -p [νŠΉμ •IP]:[호슀트의 포트]:[μ»¨ν…Œμ΄λ„ˆμ˜ 포트]
// 예) 192.168.0.100:7777:80

# -p [호슀트의 포트]:[μ»¨ν…Œμ΄λ„ˆμ˜ 포트] -p [νŠΉμ •IP]:[호슀트의 포트]:[μ»¨ν…Œμ΄λ„ˆμ˜ 포트]
// μ—¬λŸ¬ 개의 포트λ₯Ό 외뢀에 개방
// 예) -p 3306:3306 -p 192.168.0.100:7777:80

# -p 80
// μ»¨ν…Œμ΄λ„ˆμ˜ 80번 포트λ₯Ό μ“Έ 수 μžˆλŠ” 호슀트의 포트 쀑 ν•˜λ‚˜μ™€ μ—°κ²°
// μ–΄λŠν¬νŠΈμ™€ μ—°κ²°ν–ˆλŠ”μ§€ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— docker ps λͺ…λ Ήμ–΄λ‘œ PORTS ν•­λͺ© 확인 ν•„μš”

도컀 λ³Όλ₯¨

  • 도컀 μ΄λ―Έμ§€λ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜λ©΄ μ΄λ―Έμ§€λŠ” 읽기 μ „μš©μ΄ 되며, μ»¨ν…Œμ΄λ„ˆμ˜ λ³€κ²½ μ‚¬ν•­λ§Œ λ³„λ„λ‘œ μ €μž₯ν•΄μ„œ 각 μ»¨ν…Œμ΄λ„ˆμ˜ 정보λ₯Ό λ³΄μ‘΄ν•œλ‹€.
    β‡’ 도컀가 λ‚΄λ €κ°€λ©΄ μ»¨ν…Œμ΄λ„ˆκ°€ 가지고 μžˆλŠ” 정보듀이 λͺ¨λ‘ 사라짐 ( λ„μ»€μ‚¬μš© μ΄μœ κ°€ 없어짐 )
  • 이 λ•Œ, 도컀 λ³Όλ₯¨μ„ μ‚¬μš©ν•˜μ—¬ Host OS와 Docker Containerκ°€ 같은 디렉터리λ₯Ό λ°”λΌλ³΄κ²Œν•˜μ—¬ 정보λ₯Ό λ‘˜ λ‹€ μ €μž₯ν•œλ‹€.
    β‡’ 도컀가 내렀가도 Host OS에 정보가 남아 보쑴할 수 있음
  • 두 디렉터리λ₯Ό κ³΅μœ ν•˜μ—¬ μƒˆλ‘œ μƒμ„±ν•œ νŒŒμΌμ„ 두 κ³³μ—μ„œ 관리할 수 있음

πŸ“™ -v

# -v [Host OS 곡유 디렉터리(경둜)]:[μ»¨ν…Œμ΄λ„ˆ 곡유 디렉터리(경둜)]
// 예) docker run -d -v /root:/app ubuntu:22.04

πŸ“™ echo [λ¬Έμžμ—΄] > [파일λͺ….ν™•μž₯자λͺ…] : [λ¬Έμžμ—΄]이 λ‚΄μš©μœΌλ‘œ 적힌 파일 생성

πŸ“™ cat [파일λͺ….ν™•μž₯자λͺ…] : 파일 λͺ©λ‘μ—μ„œ μ°ΎκΈ°

0개의 λŒ“κΈ€