Docker πŸ³λž€ λ¬΄μ—‡μΌκΉŒ?

2022λ…„ 10μ›” 20일

TOC

Untitled

1. 도컀(Docker)λž€?

λ„μ»€λž€ κ°€μƒν™”μ˜ ν•œ μ’…λ₯˜μΈ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ΄μš©ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²©λ¦¬μ‹œμΌœμ£ΌλŠ” μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈλ‘œ 2013λ…„ 3월에 μ†”λ‘œλͺ¬ ν•˜μ΅μŠ€μ— μ˜ν•΄ 첫 λ¦΄λ¦¬μ¦ˆκ°€ λ˜μ—ˆλ‹€. λ„μ»€λŠ” 라이브러리, μ‹œμŠ€ν…œ 도ꡬ, μ½”λ“œ λ“± μ†Œν”„νŠΈμ›¨μ–΄ 싀행에 ν•„μš”ν•œ λͺ¨λ“  것듀을 ν¬ν•¨ν•œ 것을 μ»¨ν…Œμ΄λ„ˆλΌλŠ” ν‘œμ€€ν™”λœ μœ λ‹›μœΌλ‘œ νŒ¨ν‚€μ§•ν•˜μ—¬ μ‚¬μš©ν•œλ‹€. 도컀λ₯Ό μ‚¬μš©ν•˜λ©΄ 개발 ν™˜κ²½μ„ μ‰½κ²Œ ꡬ좕할 수 있고 독립적인 ν™˜κ²½μ—μ„œ λ™μž‘ν•  수 μžˆλŠ” λ“±μ˜ λ§Žμ€ μž₯점이 μ‘΄μž¬ν•˜μ—¬ μš”μ¦˜μ€ λŒ€λΆ€λΆ„μ˜ κΈ°μ—…λ“€μ—μ„œ μ΄μš©ν•˜κ³  μžˆλ‹€.

λ„μ»€μ˜ μž₯점에 λŒ€ν•œ λ‚΄μš”μ€ 이후에 μžμ„Ένžˆ μ‚΄νŽ΄λ³΄κ³  λ¨Όμ € λ„μ»€μ˜ 핡심 κ°œλ…μΈ 이미지와 μ»¨ν…Œμ΄λ„ˆμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² λ‹€.

2. μ»¨ν…Œμ΄λ„ˆλž€

μ»¨ν…Œμ΄λ„ˆλž€ κ°€μƒν™”μ˜ ν•œ μ’…λ₯˜λ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 격리된 κ³΅κ°„μ—μ„œ λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ 싀행될 수 μžˆλ„λ‘ μ½”λ“œμ™€ λͺ¨λ“  쒅속성을 νŒ¨ν‚€μ§•ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μ˜ ν‘œμ€€ 기술이자 ν”„λ‘œμ„ΈμŠ€κ°€ λ™μž‘ν•˜λŠ” κΈ°μˆ μ΄λ‹€.

가상화λ₯Ό μƒκ°ν•˜λ©΄ κ°€μž₯ λŒ€ν‘œμ μœΌλ‘œ λ– μ˜€λ₯΄λŠ” 것은 가상머신(VM)일 것이닀. μ»¨ν…Œμ΄λ„ˆμ™€ 도컀가 λ‚˜μ˜€κΈ° μ „κΉŒμ§€λŠ” ν•˜λ‚˜μ˜ PCμ—μ„œ λ‹€λ₯Έ ν™˜κ²½μ„ κ΅¬μΆ•ν•˜κ³ μž ν•˜λ©΄ ν•˜μ΄νΌλ°”μ΄μ €(Hypervisor)λ₯Ό μ΄μš©ν•΄ ν•˜λ‚˜μ˜ ν˜ΈμŠ€νŠΈμ—μ„œ μ—¬λŸ¬κ°œμ˜ Guest OSλ₯Ό μ‚¬μš©ν•΄ μ‚¬μš©ν•˜μ˜€λ‹€. μ΄λ•Œ 각각의 게슀트OSλŠ” λ‹€λ₯Έ 게슀트 OS와 λ…λ¦½λœ 곡간과 μ‹œμŠ€ν…œ μžμ›μ„ ν• λ‹Ήλ°›μ•„ μ‚¬μš©ν•œλ‹€. ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ κ°€μƒλ¨Έμ‹ μ˜ 방식은 μ•„λž˜μ™€ 같은 단점이 μ‘΄μž¬ν•˜μ˜€λ‹€.

κΈ°μ‘΄ 가상머신 λ°©μ‹μ˜ 단점

  • 각쒅 μ‹œμŠ€ν…œ μžμ›μ„ κ°€μƒν™”ν•˜κ³  λ…λ¦½λœ 곡간을 μƒμ„±ν•˜λŠ” μž‘μ—…μ€ ν•˜μ΄νΌλ°”μ΄μ €λ₯Ό κ±°μ³μ•Όν•΄μ„œ μ„±λŠ₯의 손싀이 λ°œμƒν•œλ‹€.
  • 가상 머신은 게슀트 OSλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ 라이브러리, 컀널 등을 μ „λΆ€ ν¬ν•¨ν•˜κΈ° λ•Œλ¬Έμ— 가상 머신을 λ°°ν¬ν•˜κΈ° μœ„ν•œ μ΄λ―Έμ§€λ‘œ λ§Œλ“€μ—ˆμ„ λ•Œ, 이미지 크기가 컀진닀.

β†’ 가상 머신은 μ™„λ²½ν•œ OSλ₯Ό λ§Œλ“€ μˆ˜λŠ” μžˆμ§€λ§Œ 일반 ν˜ΈμŠ€νŠΈμ— λΉ„ν•΄ μ„±λŠ₯ 손싀이 있고, μš©λŸ‰μ΄ μ»€μ„œ 가상머신 이미지λ₯Ό μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ λ°°ν¬ν•˜κΈ°μ—λŠ” λΆ€λ‹΄μŠ€λŸ½λ‹€.

μ»¨ν…Œμ΄λ„ˆλŠ” 가상머신과 λ‹€λ₯΄κ²Œ ν•˜λ“œμ›¨μ–΄λ₯Ό κ°€μƒν™”ν•˜λŠ” 것이 μ•„λ‹Œ 운영체제λ₯Ό κ°€μƒν™”ν•˜μ—¬ ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ 곡간을 λΆ„λ¦¬ν•œλ‹€. κΈ°μ‘΄ 가상 λ¨Έμ‹ μ˜ 경우 ν•˜μ΄νΌλ°”μ΄μ € μœ„μ—μ„œ λ©”λͺ¨λ¦¬μ™€ 같은 ν•˜λ“œμ›¨μ–΄ μžμ›λ“€μ„ κ°€μƒν™”ν•˜μ˜€μ§€λ§Œ μ»¨ν…Œμ΄λ„ˆλŠ” 도컀와 같은 ν”Œλž«νΌ μœ„μ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²©λ¦¬ν•œλ‹€. 덕뢄에 호슀트, 게슀트 OSλ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ²©λ¦¬ν•˜λŠ” μ˜€λ²„ν—€λ“œλ„ 쀄일 수 μžˆμ—ˆκ³ , OSμœ„μ— OSλ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” μž‘μ—…λ„ 진행할 ν•„μš”κ°€ μ—†μ–΄μ Έ κ°€λ³κ²Œ μ‹€ν–‰μ‹œν‚¬ 수 μžˆλ‹€.

도컀 μ»¨ν…Œμ΄λ„ˆλŠ” κ°€μƒν™”λœ 곡간을 μƒμ„±ν•˜κΈ° μœ„ν•΄ λ¦¬λˆ…μŠ€μ˜ 자체 κΈ°λŠ₯인 chroot, namespace, cgroup을 μ‚¬μš©ν•¨μœΌλ‘œμ¨ ν”„λ‘œμ„ΈμŠ€ λ‹¨μœ„μ˜ 격리 ν™˜κ²½μ„ λ§Œλ“€κΈ° λ•Œλ¬Έμ— 손싀이 거의 μ—†λ‹€.

  • μ»¨ν…Œμ΄λ„ˆμ— ν•„μš”ν•œ 컀널은 호슀트 OSλ₯Ό κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•˜κ³  μ»¨ν…Œμ΄λ„ˆμ—λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬λ™ν•˜λŠ”λ° ν•„μš”ν•œ 라이브러리 및 μ‹€ν–‰ 파일만 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— 이미지 μš©λŸ‰μ΄ μž‘λ‹€

Untitled

3. 도컀λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•˜λŠ” κΈ°μˆ λ‘œλŠ” OpenVZ, LXC, cri-o λ“±μ˜ μ—¬λŸ¬κ°€μ§€ 기술이 μ‘΄μž¬ν•˜μ§€λ§Œ 사싀상 도컀가 ν‘œμ€€μ΄ λ˜μ–΄ λ§Žμ€ μ‚¬λžŒλ“€μ΄ μ‚¬μš©ν•˜κ³  μžˆλ‹€. μ΄λŸ¬ν•œ ν˜„μƒμ—λŠ” μ΄μœ κ°€ μžˆλ‹€.

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

    • 도컀 μ»¨ν…Œμ΄λ„ˆλŠ” 호슀트 OS μœ„μ—μ„œ μ‹€ν–‰λ˜λŠ” 격리된 곡간이라 μ»¨ν…Œμ΄λ„ˆμ— νŠΉλ³„ν•œ κΆŒν•œμ„ 주지 μ•ŠμœΌλ©΄ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μ—¬λŸ¬ μž‘μ—…μ„ ν•˜μ—¬λ„ 호슀트 OSμ—λŠ” 영ν–₯을 λΌμΉ˜μ§€ μ•ŠλŠ”λ‹€. 즉, λ…λ¦½λœ 개발 ν™˜κ²½μ„ 보μž₯ 받을 수 μžˆλ‹€.
    • μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ—μ„œ μž‘μ—…μ„ 마친 λ’€ 배포λ₯Ό ν•˜λ €λ©΄ 도컀 이미지λ₯Ό λ§Œλ“€μ–΄ μš΄μ˜μ„œλ²„μ—λ§Œ μ „λ‹¬ν•˜λ©΄ λ˜λŠ” 듯이 νŽΈλ¦¬ν•˜λ‹€. μ΄λ•Œ 운영 μ„œλ²„μ—λŠ” μƒˆλ‘­κ²Œ νŒ¨ν‚€μ§€, 라이브러리 μ„€μΉ˜ 등을 ν•  ν•„μš”κ°€ μ—†μœΌλ©° 도컀 μ΄λ―Έμ§€λ§Œμ„ μ„€μΉ˜ 및 μ‹€ν–‰ν•˜λŠ” κ²ƒμœΌλ‘œλ„ λ™μΌν•œ ν™˜κ²½ ꡬ좕을 νŽΈλ¦¬ν•˜κ²Œ ν•  수 μžˆλ‹€. β†’ 개발/운영 ν™˜κ²½μ˜ 톡합이 κ°€λŠ₯해진닀.
    • 도컀 μ΄λ―Έμ§€λŠ” 컀널을 ν¬ν•¨ν•˜κ³  μžˆμ§€ μ•Šμ•„μ„œ μ΄λ―Έμ§€μ˜ 크기가 크지 μ•Šλ‹€.
    • λ„μ»€λŠ” 이미지 λ‚΄μš©μ„ λ ˆμ΄μ–΄ λ‹¨μœ„λ‘œ κ΅¬μ„±ν•˜λ©° μ€‘λ³΅λ˜λŠ” λ ˆμ΄μ–΄λ₯Ό μž¬μ‚¬μš©ν•  수 μžˆμ–΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 배포 속도가 λΉ¨λΌμ§„λ‹€λŠ” μž₯점이 μžˆλ‹€.
  • μ—¬λŸ¬ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 독립성과 ν™•μž₯성이 높아진닀.

    • μ„œλΉ„μŠ€μ˜ 규λͺ¨κ°€ 컀질수둝 λͺ¨λ†€λ¦¬μŠ€(Monolith)κ°€ μ•„λ‹Œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€(Microservices)ꡬ쑰가 μ„ ν˜Έλœλ‹€. μ»¨ν…Œμ΄λ„ˆλŠ” 수 초 λ‚΄λ‘œ 생성, μ‹œμž‘μ΄ κ°€λŠ₯ν•˜κ³  λ…λ¦½λœ ν™˜κ²½μ„ λ™μ‹œμ— μ œκ³΅ν•  수 μžˆμ–΄μ„œ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ ꡬ쑰에 많이 μ‚¬μš©λ˜κ³  μžˆλ‹€.

      λͺ¨λ†€λ¦¬μŠ€ κ΅¬μ‘°λŠ” μ—¬λŸ¬ λͺ¨λ“ˆμ΄ μƒν˜Έμž‘μš©ν•˜λŠ” λ‘œμ§μ„ ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ—μ„œ κ΅¬λ™ν•˜μ—¬μ„œ ν™•μž₯μ„±κ³Ό μœ μ—°μ„±μ΄ 쀄어든닀.

      마이크둜 μ„œλΉ„μŠ€ κ΅¬μ‘°λŠ” μ—¬λŸ¬ λͺ¨λ“ˆμ„ 독립적인 ν˜•νƒœλ‘œ κ΅¬μ„±ν•˜μ—¬ 언어에 μ’…μ†λ˜μ§€ μ•Šκ³  변화에 λΉ λ₯΄κ²Œ λŒ€μ‘ν•  수 있으며, 각 λͺ¨λ“ˆμ˜ 관리가 μ‰¬μ›Œμ§„λ‹€λŠ” μž₯점이 μžˆλ‹€.

4. 도컀 λͺ…λ Ήμ–΄ μ•Œμ•„λ³΄κΈ°

  • 도컀 μ„€μΉ˜μ •λ³΄ 보기

    $ docker info
  • 도컀 버전 보기

    $ docker -v
  • 도컀 이미지 Pull

    $ docker pull centos:7

    λ„μ»€μ—μ„œ μ‚¬μš©ν•˜λŠ” μ΄λ―Έμ§€μ˜ 이름은 [μ €μž₯μ†Œ 이름]/[이미지 이름]:[νƒœκ·Έ]의 ν˜•νƒœλ‘œ κ΅¬μ„±λœλ‹€.

    • ex) seongwon97/ubuntu:14.04 or ubuntu:latest
    • μ €μž₯μ†Œ 이름은 이미지가 μ €μž₯된 μž₯μ†Œλ₯Ό μ˜λ―Έν•œλ‹€. μ €μž₯μ†Œκ°€ λͺ…μ‹œλ˜μ§€ μ•Šμ€ μ΄λ―Έμ§€λŠ” λ„μ»€μ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” 이미지 μ €μž₯μ†ŒμΈ 도컀 ν—ˆλΈŒμ˜ 곡식 이미지λ₯Ό λœ»ν•œλ‹€.
    • 이미지 이름은 ν•΄λ‹Ή 이미지가 μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ λ‚˜νƒ€λ‚Έλ‹€. 이미지 이름은 μƒλž΅ν•  수 μ—†μ–΄ λ°˜λ“œμ‹œ μ„€μ •ν•΄μ•Ό ν•œλ‹€.
    • νƒœκ·ΈλŠ” 이미지 버전 관리, ν˜Ήμ€ 리비전(revision) 관리에 μ‚¬μš©ν•œλ‹€. νƒœκ·Έλ₯Ό μƒλž΅ν•˜λ©΄ 도컀 엔진은 이미지 νƒœκ·Έλ₯Ό latest둜 μΈμ‹ν•œλ‹€.
  • 도컀 이미지 λͺ©λ‘ 보기

    $ docker images
  • μ»¨ν…Œμ΄λ„ˆ 생성

    $ docker create -i -t --name mycentos centos:7

    λ‹€μŒκ³Ό 같이 μ»¨ν…Œμ΄λ„ˆλ₯Ό μƒμ„±ν•˜λ©΄ μ•„λž˜μ™€ 같이 μ΄μƒν•œ 값이 λ‚˜μ˜¬ 것이닀.

    Untitled

    ν•΄λ‹Ή μˆ«μžλŠ” μ»¨ν…Œμ΄λ„ˆμ˜ 고유 IDλ₯Ό μ˜λ―Έν•˜λŠ” 16μ§„μˆ˜μ˜ ν•΄μ‹œκ°’μœΌλ‘œ μΌλ°˜μ μœΌλ‘œλŠ” λ„ˆλ¬΄ κΈΈμ–΄μ„œ 12자리만 μ‚¬μš©ν•œλ‹€.

    πŸ“ŒΒ μ»¨ν…Œμ΄λ„ˆμ˜ ν•΄μ‹œ 값은 docker inspect λͺ…λ Ήμ–΄λ‘œ μ»¨ν…Œμ΄λ„ˆμ˜ idλ₯Ό λ‹€μ‹œ 확인할 수 μžˆλ‹€. (μ»¨ν…Œμ΄λ„ˆ 정보 자체λ₯Ό 확인)

    πŸ“ŒΒ  λͺ¨λ“  λͺ…λ Ήμ–΄λŠ” μ»¨ν…Œμ΄λ„ˆ μ΄λ¦„λΏλ§Œ μ•„λ‹ˆλΌ μ»¨ν…Œμ΄λ„ˆμ˜ idλ₯Ό ν†΅ν•΄μ„œλ„ μ‹€ν–‰ κ°€λŠ₯ν•˜λ‹€. 이름이 λ„ˆλ¬΄ κΈ΄ 경우 μ•žμ˜ 2~3자만 μž…λ ₯해도 λœλ‹€. (Git commit log와 μœ μ‚¬)

  • μ»¨ν…Œμ΄λ„ˆ 정보 확인

    $ docker inspect mycentos
    // μ»¨ν…Œμ΄λ„ˆ ID확인
    $ docker inspect mycentos | grep Id
  • μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰

    $ docker start mycentos
  • run을 ν†΅ν•œ 도컀 μ»¨ν…Œμ΄λ„ˆ 생성 및 μ‹€ν–‰ (이미지가 μ—†μœΌλ©΄ μžλ™ λ‹€μš΄ 및 μ‹€ν–‰)

    • run은 pull, create, start λͺ…λ Ήμ–΄λ₯Ό μΌκ΄„μ μœΌλ‘œ μ‹€ν–‰ν•œ ν›„ attachκ°€ κ°€λŠ₯ν•œ μ»¨ν…Œμ΄λ„ˆλ©΄ λ‚΄λΆ€κΉŒμ§€ λ“€μ–΄κ°€μ€€λ‹€.
    $ docker run -i -t ubuntu:latest
    • run의 λ‹€μ–‘ν•œ μ˜΅μ…˜λ“€

      μ˜΅μ…˜ μ„€λͺ…
      -d detatched λͺ¨λ“œλ‘œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰μ‹œμΌœ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λ™μž‘ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ μ‹€ν–‰ν•˜λ„λ‘ μ„€μ •ν•œλ‹€.
      -p 호슀트 ν¬νŠΈμ™€ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ 포트λ₯Ό λ°”μΈλ“œν•œλ‹€.
      -v 도컀 λ³Όλ₯¨μ— λŒ€ν•œ 섀정이닀. μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€μ˜ 디렉토리λ₯Ό 호슀트둜 마운트 (μ—°κ²°) ν•œλ‹€.
      -e μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€ OS의 ν™˜κ²½λ³€μˆ˜λ₯Ό μ„€μ •ν•œλ‹€.
      --name μ»¨ν…Œμ΄λ„ˆμ˜ 이름을 μ„€μ •ν•œλ‹€.
      --rm μ»¨ν…Œμ΄λ„ˆκ°€ μ’…λ£Œλ  경우 μ»¨ν…Œμ΄λ„ˆ 자체λ₯Ό μ‚­μ œν•œλ‹€.
      -it 터미널 μž…λ ₯을 μœ„ν•œ μ˜΅μ…˜.Β -iμ˜΅μ…˜κ³ΌΒ -tμ˜΅μ…˜μ€ 주둜 ν•¨κ»˜ μ‚¬μš©λœλ‹€. (-i μ˜΅μ…˜μ€ μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€λ‘œ μ§„μž…ν•˜λ„λ‘ attachκ°€ κ°€λŠ₯ν•œ μƒνƒœλ‘œ μ„€μ •ν•˜μ—¬ μ»¨ν…Œμ΄λ„ˆμ™€ μƒν˜Έ μž…μΆœλ ₯을 κ°€λŠ₯ν•˜κ²Œ ν•˜λ©° , -tμ˜΅μ…˜μ€ ttyλ₯Ό ν™œμ„±ν™”ν•˜μ—¬ bash shell을 μ‚¬μš©ν•˜λ„λ‘ ν•œλ‹€. )
      -w WORKDIR λ₯Ό μ„€μ •ν•œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€λ‘œ 접속

    $ docker attach mycentos

    Untitled

    μ ‘μ†ν•œ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ‚˜κ°€λŠ” 방법

    • exit, ctrl + D : ν•΄λ‹Ή 방법은 bash shellκ³Ό μ»¨ν…Œμ΄λ„ˆλ₯Ό λ‚˜κ°€λ©΄μ„œ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ •μ§€μ‹œν‚€κΈ°κΉŒμ§€ ν•œλ‹€.
    • ctrl + P, Q : λ‹¨μˆœνžˆ μ»¨ν…Œμ΄λ„ˆμ˜ shellμ—μ„œλ§Œ λΉ μ Έλ‚˜μ˜¨λ‹€.
  • μ»¨ν…Œμ΄λ„ˆ λͺ©λ‘ 확인

    // μ •μ§€λ˜μ§€ μ•Šμ€ μ»¨ν…Œμ΄λ„ˆλ§Œ 좜λ ₯
    $ docker ps
    
    // λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλ₯Ό 좜λ ₯
    $ docker ps -a 
    
    // λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆμ˜ id 좜λ ₯
    // -q μ˜΅μ…˜μ€ μ»¨ν…Œμ΄λ„ˆμ˜ ID만 좜λ ₯ν•œλ‹€.
    $ docker ps -a -q

    Untitled

    • docker ps -a에 λ‚˜μ˜€λŠ” 정보듀

      • CONTAINER ID: μ»¨ν…Œμ΄λ„ˆμ—κ²Œ μžλ™μœΌλ‘œ ν• λ‹Ήλ˜λŠ” κ³ μœ ν•œ ID이닀.

        • 좜λ ₯κ°’μ—λŠ” ID의 일뢀가 λ‚˜μ™€μžˆκ³  전체 IDλŠ” docker inspect mycentos | grep Id λͺ…λ Ήμ–΄λ₯Ό 톡해 확인할 수 μžˆλ‹€.
      • COMMAND: μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ  λ–„ 싀행될 λͺ…령어이닀. λŒ€λΆ€λΆ„μ˜ μ»€λ©˜λ“œλŠ” 이미지에 미리 λ‚΄μž₯λ˜μ–΄ μžˆμ–΄μ„œ λ³„λ„λ‘œ μ„€μ •ν•  ν•„μš”κ°€ μ—†λ‹€.
      • CREATED: μ»¨ν…Œμ΄λ„ˆκ°€ μƒμ„±λ˜κ³  λ‚œ λ’€ 흐λ₯Έ μ‹œκ°„μ„ λ‚˜νƒ€λ‚Έλ‹€.
      • STATUS: μ»¨ν…Œμ΄λ„ˆμ˜ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

        • UP: μ»€λ„€μ΄λ„ˆκ°€ 싀행쀑이닀.
        • Exited: μ’…λ£Œλœ μƒνƒœμ΄λ‹€.
        • Pause: μΌμ‹œ μ€‘μ§€λœ μƒνƒœμ΄λ‹€.
      • PORTS: μ»¨ν…Œμ΄λ„ˆκ°€ κ°œλ°©ν•œ ν¬νŠΈμ™€ ν˜ΈμŠ€νŠΈμ— μ—°κ²°ν•œ 포트λ₯Ό λ‚˜μ—΄ν•œλ‹€.
      • NAMES: μ»¨ν…Œμ΄λ„ˆμ˜ κ³ μœ ν•œ 이름이닀.

        • --name μ˜΅μ…˜μœΌλ‘œ 이름을 μ„€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 도컀 엔진이 μž„μ˜λ‘œ ν˜•μš©μ‚¬μ™€ λͺ…사λ₯Ό λ¬΄μž‘μœ„λ‘œ μ‘°ν•©ν•΄ 이름을 μ„€μ •ν•œλ‹€.
        • μ»¨ν…Œμ΄λ„ˆ 이름도 ID와 같이 μ€‘λ³΅λœ μ΄λ¦„μœΌλ‘œ 생성이 λΆˆκ°€λŠ₯ν•˜λ‹€.
        • 이름 변경은 docker rename {μ»¨ν…Œμ΄λ„ˆμ˜ 이전 이름} {μƒˆλ‘œμš΄ 이름} 을 톡해 λ³€κ²½ν•  수 μžˆλ‹€.
  • μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ

    // νŠΉμ • 이미지 제거 (μ‹€ν–‰λœ 것은 μ‚­μ œ λΆˆκ°€)
    $ docker rm {이미지 이름 or Id}
    // 싀행쀑인 것도 제거 κ°€λŠ₯
    $ docker rm -f {이미지 이름 or Id}
    // λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆ μ‚­μ œ
    $ docker container prune
  • detached λͺ¨λ“œμ˜ μ»¨ν…Œμ΄λ„ˆ μ ‘κ·Ό

    • detathed λͺ¨λ“œλ‘œ λ§Œλ“€μ–΄μ§„ containerλŠ” docker attach λͺ…λ Ήμ–΄λ‘œ λ‚΄λΆ€ 터미널에 μ ‘κ·Όν•  수 μ—†λ‹€. 이런 경우 docker execλͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λ©΄ μ ‘κ·Όν•  수 μžˆλ‹€.
    docker exec -i -t {μ»¨ν…Œμ΄λ„ˆ 이름} /bin/bash

πŸ“ŒΒ docker stop, start, restart λ“±μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” μ—¬λŸ¬κ°œμ˜ μ»¨ν…Œμ΄λ„ˆ 이름을 순차적으둜 μž…λ ₯ν•˜μ—¬ λ™μ‹œμ— μˆ˜ν–‰ν•  μˆ˜λ„ μžˆλ‹€.

πŸ“šReference

Buy me a coffeeBuy me a coffee
Written by

@Seongwon

기술곡유λ₯Ό 톡해 μƒˆλ‘œμš΄ κ°€μΉ˜ 창쑰을 μΆ”κ΅¬ν•˜λŠ” λ°±μ—”λ“œ 개발자 μ˜€μ„±μ›μž…λ‹ˆλ‹€.