• 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