• toc {:toc}

Docker Overview

  • Docker Edition Community Edition β‡’ 개인 개발자, μž‘μ€ νŒ€μ„ μœ„ν•΄ Enterprise Edition β‡’ κΈ°μ—… 개발, IT νŒ€μ„ μœ„ν•΄ κ³ μ•ˆ

  • Docker λŠ” 무엇인가?

  • CLI(Commend line interface), GUI λ₯Ό ν†΅ν•΄μ„œ 도컀 엔진에 λͺ…령을 보낸 것이닀.

  • GUI λŠ” 무겁기 λ•Œλ¬Έμ— μ„œλ²„μ—μ„œ 많이 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

  • ssh λ₯Ό ν†΅ν•΄μ„œ 원격 μ ‘μ†ν•˜μ—¬ CLI λ₯Ό 톡해 μ‚¬μš©ν•œλ‹€.

  • Docker Engine 은 무엇인가?

image

  • Docker Daemon β‡’ μ„œλ²„

    • API μš”μ²­λ“€μ„ λ“£κ³  Docker object 듀을 κ΄€λ¦¬ν•œλ‹€. λ‹€λ₯Έ daemon λ“€κ³Ό μ†Œν†΅ν•œλ‹€.
  • Docker Client (CLI, GUI λ₯Ό μ΄μš©ν•΄ 도컀λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬μš©)

    • CLI β‡’ 도컀 엔진에 λŒ€ν•œ instruction 을 μ œκ³΅ν•œλ‹€.
    • μ›Ήμ˜ ν΄λΌμ΄μ–ΈνŠΈ-μ„œλ²„ 아킀텍쳐와 μœ μ‚¬ν•˜λ‹€. (remote server)
      • μ„œλ‘œ μƒν˜Έμž‘μš©
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ—”μ§„μ—κ²Œ μ»¨ν…Œμ΄λ„ˆ 일을 μˆ˜ν–‰ν•˜λ„λ‘ μš”μ²­ν•œλ‹€.
    • 도컀 ν΄λΌμ΄μ–ΈνŠΈλŠ” ν•˜λ‚˜ μ΄μƒμ˜ daemon κ³Ό μ†Œν†΅ν•  수 μžˆλ‹€. λ‘˜ μ‚¬μ΄μ˜ μ†Œν†΅μ„ μ–΄λ–»κ²Œ ν•  것이냐 β‡’ rest api λ₯Ό μ΄μš©ν•œλ‹€. rest api(ν•¨μˆ˜ 호좜)
  • rest api β†’ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•˜κ³  λ°›μ•„μ˜¬ 수 μžˆλ„λ‘ ν•˜λŠ” api

    • CRUD(Create, Read, Update, Delete) 연산을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ URI 둜 get, post λ“± μš”μ²­μ„ 보내면 μžμ›μ€ νŠΉμ •ν•œ ν˜•νƒœλ‘œ ν‘œν˜„λœλ‹€.
  • restful api β†’ μ‹€μ§ˆμ μœΌλ‘œ κ΅¬ν˜„ κ°€λŠ₯ν•œ 것? 컴퓨터와 컴퓨터가 http λΌλŠ” ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄ ν•¨μˆ˜ν˜ΈμΆœν•˜λ“― μš”μ²­ν•˜λ©΄ 그에 λ”°λ₯Έ 응닡을 λŒλ €μ£ΌλŠ” ν˜•μ‹

  • Docker registries

  • 도컀 이미지λ₯Ό μ €μž₯ν•œλ‹€.

  • Public registry

    • λͺ¨λ‘κ°€ μ‚¬μš©κ°€λŠ₯ν•˜λ‹€. Docker Hub & Docker Cloud
  • Private registry

    • Docker Trusted Registry (DTR)
  • Docker Ecosystem

  • 이미지λ₯Ό λ§Œλ“  것에 λŒ€ν•΄ 도컀 ν—ˆλΈŒμ— μ˜¬λ¦¬λ‚˜, μ½”λ“œλŠ” μ˜¬λ¦¬μ§€ μ•ŠλŠ”λ‹€. μ½”λ“œλŠ” git system 에 μ˜¬λ¦°λ‹€.

  • 개발 β†’ ν•˜λ“œμ›¨μ–΄μ— host os, container system

  • μ½”λ“œμ™€ Dockerfile (μ½”λ“œ) λŠ” git system 에 μ˜¬λ¦°λ‹€.

  • 이미지인 κ²½μš°μ—λŠ” μ»¨ν…Œμ΄λ„ˆ 리포, 이미지 리포에 μ˜¬λ¦°λ‹€.

Docker Underlying Technologies

  • Go μ–Έμ–΄λ₯Ό 톡해 λ§Œλ“€μ–΄μ‘Œλ‹€.
  • μ»¨ν…Œμ΄λ„ˆλŠ” 가상머신과 λ‹€λ₯΄λ‹€.
  • λ„μ»€λŠ” λͺ…령을 μˆ˜ν–‰ν•œλ‹€. λͺ…령에 따라 λ‹€λ₯΄λ‹€. λͺ…령을 μ–΄λ–»κ²Œ μ£ΌλŠ”κ°€μ— λ”°λΌμ„œ 지속될지, ν•œμˆœκ°„ 끝날지 κ²°μ •λœλ‹€. λ‹€μŒμ΄ 가상머신과 λ‹€λ₯΄λ‹€. ν•˜μ§€λ§Œ 가상머신과 μœ μ‚¬ν•œ νŠΉμ§•μ„ κ°–λŠ”λ‹€.
  • λ¦¬λˆ…μŠ€ 컀널 νŠΉμ§•λ“€μ˜ μž₯점을 κ°–λŠ”λ‹€.
    • Namespaces
      • 이름을 κ΅¬λΆ„ν•œλ‹€.
      • λ‘κ°œμ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‚¬μš©ν•  λ•Œ ν•˜λ‚˜μ˜ 물리적인 μžμ›μ„ λ…Όλ¦¬μ μœΌλ‘œλŠ” λ‘˜μ΄ 각각 λ”°λ‘œ μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ λ§Œλ“€ 수 μžˆλ‹€.
      • 가상머신인 κ²ƒμ²˜λŸΌ μ“Έ 수 있게 ν•˜μ§€λ§Œ 가상머신은 μ•„λ‹ˆλ‹€.
      • 각자의 μ»¨ν…Œμ΄λ„ˆκ°€ λΆ„λ¦¬λ˜κ³  μ œν•œλœ 접근을 κ°–λŠ”λ‹€.
    • Control group
      • 도컀λ₯Ό μ‚¬μš©ν•΄ νŠΉμ • μ»¨ν…Œμ΄λ„ˆκ°€ μ΄μš©κ°€λŠ₯ν•œ λ©”λͺ¨λ¦¬λ₯Ό μ œν•œν•  수 μžˆλ‹€.
      • κ³΅μœ ν•˜λ©° μ‚¬μš©ν•  수 μžˆλŠ” ν•˜λ“œμ›¨μ–΄ μžμ›μ„ μ»¨ν…Œμ΄λ„ˆκ°€ μ œν•œμ μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ μ„€μ •ν•  수 μžˆλ‹€.
    • Union file systems
    • Container format