YesCoding

search:

Docker Container κΈ°λ³Έ κ°œλ…

νšŒμ‚¬μ—μ„œ μΏ λ²„λ„€ν‹°μŠ€/도컀 μŠ€ν„°λ””κ°€ μžˆμ–΄ κ³΅λΆ€ν•˜λ˜ 쀑 도컀 μ»¨ν…Œμ΄λ„ˆ κΈ°λ³Έ κ°œλ…μ— λŒ€ν•΄ 이해가 μ‰½κ²Œ 쓰인 뢀뢄이 μžˆμ–΄ λ°œμ·Œν•΄ μ •λ¦¬ν•©λ‹ˆλ‹€. 좜처: [15λ‹¨κ³„λ‘œ λ°°μš°λŠ” 도컀와 μΏ λ²„λ„€ν‹°μŠ€]

λ„μ»€μ˜ μ΄λ―Έμ§€λŠ” μš΄μ˜μ²΄μ œμ™€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ‹΄κ³  μžˆλŠ” μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ μ΄μ „μ˜ μƒνƒœλ‹€. 각 μ΄λ―Έμ§€λŠ” '리포지터리:νƒœκ·Έ' 둜 μ‹λ³„λœλ‹€. λ„μ»€μ˜ 리포지터리(λ ˆμ§€μŠ€νŠΈλ¦¬λΌκ³ λ„ 뢀름)λŠ” 이미지 λ³΄κ΄€μ†Œλ₯Ό λ§ν•œλ‹€. 같은 리포지터리여도 버전 등을 μ˜λ―Έν•˜λŠ” νƒœκ·Έλ₯Ό 이름에 λΆ™μ—¬μ„œ 이미지λ₯Ό κ΅¬λ³„ν•˜μ—¬ 보관할 수 μžˆλ‹€.

도컀 μ»€λ§¨λ“œλŠ” λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 돌고 μžˆλŠ” 도컀 엔진에 λͺ…령을 μ£Όμ–΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•œλ‹€. λ‚˜λŠ” MacOS λ₯Ό μ“°κ³  μžˆλŠ”λ°, νšŒμ‚¬ ν”„λ‘œμ νŠΈκ°€ 도컀λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμ–΄μ„œ AWS 가상 λ¨Έμ‹ μ˜ λ¦¬λˆ…μŠ€μ—μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•œλ‹€. 도컀 μ»€λ§¨λ“œλ‘œ 도컀 엔진을 μ‘°μž‘ν•˜μ—¬ μ•„λž˜ 10 가지 λ™μž‘μ„ μ‹€ν–‰ν•΄ μ»¨ν…Œμ΄λ„ˆ 생λͺ… μ£ΌκΈ°λ₯Ό λ‹€λ£° 수 μžˆλ‹€.

μ»¨ν…Œμ΄λ„ˆ 생λͺ… 주기와 도컀 μ»€λ§¨λ“œ

μ»¨ν…Œμ΄λ„ˆμ˜ 3가지 μƒνƒœ

  • 이미지: μ»¨ν…Œμ΄λ„ˆμ˜ λͺ¨ν˜•μ΄ λ˜λŠ” κ²ƒμœΌλ‘œ, μ‹€ν–‰λ˜κΈ° 이전 μƒνƒœμ΄λ‹€.
  • μ‹€ν–‰: μ»¨ν…Œμ΄λ„ˆ μœ„μ—μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰ 쀑인 μƒνƒœμ΄λ‹€.
  • 정지: ν”„λ‘œμ„ΈμŠ€μ˜ μ’…λ£Œ μ½”λ“œ, λ‘œκ·Έκ°€ 보쑴된 채 μ •μ§€ν•œ μƒνƒœμ΄λ‹€.

docker status flow

docker status flow

  1. 이미지 λ‹€μš΄λ‘œλ“œ (docker pull)

    터미널에 docker pull 리포지터리λͺ…[:νƒœκ·Έ] λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ›κ²©μ˜ λ¦¬ν¬μ§€ν„°λ¦¬λ‘œλΆ€ν„° 이미지λ₯Ό λ‹€μš΄λ‘œλ“œ(pull) ν•œλ‹€.

    둜컬 λ¦¬ν¬μ§€ν„°λ¦¬μ—μ„œ λ‹€μš΄λ‘œλ“œλœ 이미지λ₯Ό ν™•μΈν•˜κ³  μ‹ΆμœΌλ©΄ docker images μ»€λ§¨λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λœλ‹€.

  2. μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ (docker run)

    터미널에 docker run [option] 리포지터리λͺ…:νƒœκ·Έ [μ»€λ§¨λ“œ][인자] λŠ” μ§€μ •ν•œ 이미지λ₯Ό λͺ¨ν˜•μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό κ°€λ™ν•œλ‹€. λ§Œμ•½ 둜컬 리포지터리에 μ—†μœΌλ©΄ 원격 λ¦¬ν¬μ§€ν„°λ¦¬μ—μ„œ 이미지λ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ»¨ν…Œμ΄λ„ˆλ₯Ό κ°€λ™ν•œλ‹€. 원격 λ¦¬ν¬μ§€ν„°λ¦¬λŠ” λ””ν΄νŠΈλ‘œ 도컀 ν—ˆλΈŒ(docker hub) μ΄μ§€λ§Œ ν΄λΌμš°λ“œμ—μ„œ μ œκ³΅ν•˜λŠ” 프라이빗 λ ˆμ§€μŠ€νŠΈλ¦¬ μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆλ‹€.

  3. μ»¨ν…Œμ΄λ„ˆ μƒνƒœ 좜λ ₯ (docker ps)

    docker ps [μ˜΅μ…˜] 은 μ‹€ν–‰ μ€‘μ΄κ±°λ‚˜ 정지 μƒνƒœμ— μžˆλŠ” μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘μ„ 좜λ ₯ν•œλ‹€. μ˜΅μ…˜μ„ μƒλž΅ν•˜λ©΄ μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ§Œμ„ 좜λ ₯ν•˜λ©°, docker ps -a 둜 ν•˜λ©΄ 정지 μƒνƒœμΈ μ»¨ν…Œμ΄λ„ˆλ„ 좜λ ₯λœλ‹€. 정지 μƒνƒœμΈ μ»¨ν…Œμ΄λ„ˆλŠ” μ‚­μ œλ  λ•ŒκΉŒμ§€ 남아 μžˆλ‹€.

  4. 둜그 좜λ ₯ (docker logs)

    docker logs [μ˜΅μ…˜] μ»¨ν…Œμ΄λ„ˆID | μ»¨ν…Œμ΄λ„ˆλͺ… 으둜 μ»¨ν…Œμ΄λ„ˆλ“€μ˜ 둜그λ₯Ό 확인할 수 μžˆλ‹€. μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆ, 정지 μƒνƒœμΈ μ»¨ν…Œμ΄λ„ˆ λͺ¨λ“œ 둜그λ₯Ό 좜λ ₯ν•  수 μžˆλ‹€.

  5. μ»¨ν…Œμ΄λ„ˆ 정지 (docker stop, docker kill)

    μ‹€ν–‰ 쀑인 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ§€μ‹œν‚€λŠ” λ°©λ²•μ—λŠ” 3가지가 μžˆλ‹€.

    1. μ»¨ν…Œμ΄λ„ˆμ˜ PID=1 인 ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œν•œλ‹€.
    2. docker stop μ»¨ν…Œμ΄λ„ˆ ID | μ»¨ν…Œμ΄λ„ˆλͺ… 을 μ‹€ν–‰ν•œλ‹€.
    3. docker kill μ»¨ν…Œμ΄λ„ˆ ID | μ»¨ν…Œμ΄λ„ˆλͺ… 을 μ‹€ν–‰ν•œλ‹€.
  6. μ»¨ν…Œμ΄λ„ˆ μž¬κΈ°λ™ (docker start)

    정지 μƒνƒœμΈ μ»¨ν…Œμ΄λ„ˆλŠ” docker start [μ˜΅μ…˜] μ»¨ν…Œμ΄λ„ˆ ID | μ»¨ν…Œμ΄λ„ˆλͺ… 으둜 μž¬κ°€λ™ν•  수 μžˆλ‹€.

  7. μ»¨ν…Œμ΄λ„ˆμ˜ λ³€κ²½ 사항을 리포지터리에 μ €μž₯ (docker commit)

    싀행쀑인 μ»¨ν…Œμ΄λ„ˆμ˜ λ¦¬λˆ…μŠ€μ—μ„œλ„ ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈν•  수 μžˆλ‹€. docker commit [μ˜΅μ…˜] μ»¨ν…Œμ΄λ„ˆ IP | μ»¨ν…Œμ΄λ„ˆλͺ… 리포지터리λͺ…[:νƒœκ·Έ] λ₯Ό μ‹€ν–‰ν•˜λ©΄ μ—…λ°μ΄νŠΈ 정보λ₯Ό μ΄λ―Έμ§€λ‘œ λ§Œλ“€μ–΄ 리포지터리에 보관할 수 μžˆλ‹€.

  8. 이미지λ₯Ό 원격 리포지터리에 보관 (docker push)

  9. μ’…λ£Œν•œ μ»¨ν…Œμ΄λ„ˆ 제거 (docker rm)

    docker rm μ»¨ν…Œμ΄λ„ˆID | μ»¨ν…Œμ΄λ„ˆλͺ… 을 μ‹€ν–‰ν•˜λ©΄ μ»¨ν…Œμ΄λ„ˆκ°€ μ‚­μ œλœλ‹€.

  10. ν•„μš” 없어진 이미지λ₯Ό 둜컬 λ¦¬ν¬μ§€ν„°λ¦¬μ—μ„œ μ‚­μ œ (docker rmi)

πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘πŸ’‘ 9 와 10 은 μ€‘μš”ν•˜λ‹€. μ œλŒ€λ‘œ 정리λ₯Ό 해주지 μ•ŠμœΌλ©΄ docker - no space left on device μ—λŸ¬ 메세지λ₯Ό λ§Œλ‚  수 μžˆλ‹€.

Recommend Post
Β© Copyright 2022, YesCoding