(๋ฒˆ์—ญ) docs.docker.com/get-started/overview/

Jake_Youngยท2020๋…„ 8์›” 5์ผ
0

๋„์ปค, Docker

๋ชฉ๋ก ๋ณด๊ธฐ
4/9

ํ•„์ž๋Š” ์œ„ ์‚ฌ์ดํŠธ์— ๊ธฐ์žฌ๋œ ๋‚ด์šฉ์„ ๋ฒˆ์—ญํ•˜๋ฉด์„œ,
์˜์—ญ๊ณผ ์‚ฌ๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‹น์—ฐํ•œ ๋‚ด์šฉ์€ ์ƒ๋žตํ•˜์˜€์Œ์„ ๋ฏธ๋ฆฌ ๋ฐํžŒ๋‹ค.

๐ŸŽˆ ๊ฐœ์š”

  • ๋„์ปค๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ณ  ์ „๋‹ฌํ•˜๊ณ  ์ œ์ž‘ํ•˜๋Š” ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.
  • ๋„์ปค๋Š” ๋‹น์‹ ์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์˜ํ™˜๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ์‹œ์ผœ์ค๋‹ˆ๋‹ค.
  • ๊ทธ ๋•๋ถ„์— ๋‹น์‹ ์€ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ์šด์˜ํ™˜๊ฒฝ์—์„œ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ๋””๋ฒ„๊น…์„ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

๐ŸŽช ๋„์ปค ํ”Œ๋žซํผ

  • ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ณ ๋ฆฝ๋œ ์‹คํ–‰ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰์‹œ์ผœ์ค๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋™์‹œ์— ํ•œ ์šด์˜์ฒด์ œ ์œ„์—์„œ ์ž‘๋™๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•˜์ดํผ๋ฐ”์ด์ € ์—†์ด๋„ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ํ•˜์ดํผ๋ฐ”์ด์ € ๋Œ€์‹  ํ˜ธ์ŠคํŠธ ์šด์˜์ฒด์ œ์˜ ์ปค๋„์„ ์ง์ ‘ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•  ๋•Œ๋ณด๋‹ค ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์‚ฌ์‹ค ๊ฐ€์ƒํ™˜๊ฒฝ ์œ„์—์„œ๋„ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽ ๋„์ปค ์—”์ง„

  • ๋„์ปค ์—”์ง„์ด๋ž€ ์•„๋ž˜์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ–์ถ˜ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งํ•œ๋‹ค.

    1. ๋ฐ๋ชฌ ์„œ๋ฒ„ (๊ณ„์† ์ผœ์ ธ ์žˆ๋Š” ์„œ๋ฒ„)
      • ๋ฐ๋ชฌ์€ ์ด๋ฏธ์ง€๋‚˜ ์ปจํ…Œ์ด๋„ˆ, ๋„คํŠธ์›ค, ๋ณผ๋ฅจ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
    2. ๋ฐ๋ชฌ๊ณผ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” REST API
    3. CLI ํด๋ผ์ด์–ธํŠธ


๐ŸŽ ๋„์ปค๋ฅผ ์™œ ์“ฐ๋Š”๊ฐ€?

  1. ๋น ๋ฅด๊ณ  ์ผ๊ด€๋œ ๊ฐœ๋ฐœ/์šด์˜ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  2. ์ž๋™์œผ๋กœ ์„œ๋ฒ„ ํ™•์žฅ/์ถ•์†Œ ๊ธฐ๋Šฅ(auto scaling)
  3. ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด์—์„œ ๋” ๋งŽ์€ ํ”„๋กœ๊ทธ๋žจ ์šด์˜

โœจ ๋„์ปค ์•„ํ‚คํ…์ณ

  • ๋„์ปค๋Š” ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•„ํ‚คํ…์ณ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.
  • ๋„์ปค ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ๋ฐ๋ชฌ๊ณผ ์†Œํ†ตํ•˜๋ฉฐ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค.
  • ์†Œํ†ต์€ ์œ ๋‹‰์Šค ์†Œ์ผ“ ํ†ต์‹  ๊ธฐ๋ฐ˜์˜ REST API๋ฅผ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋„์ปค ๋ฐ๋ชฌ

  • dockerd๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ๋ฐ๋ชฌ
  • API ์š”์ฒญ์— ๋”ฐ๋ผ ๋„์ปค ๊ฐ์ฒด(Obeject: ์ปจํ…Œ์ด๋„ˆ, ์ด๋ฏธ์ง€, ๋„คํŠธ์›Œํฌ, ๋ณผ๋ฅจ)์„ ๊ด€๋ฆฌํ•œ๋‹ค.
  • ๋ฐ๋ชฌ๋ผ๋ฆฌ๋„ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„์ปค ํด๋ผ์ด์–ธํŠธ

  • docker๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ
  • ๋„์ปค์™€ ์†Œํ†ตํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๋„๊ตฌ์ด๋‹ค.
  • ๋‹น์‹ ์ด "docker run"๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์“ฐ๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ๋ชฌ์— ์ด๋ฅผ API๋กœ ์ „๋‹ฌํ•œ๋‹ค.
  • ๋„์ปค ํด๋ผ์ด์–ธํŠธ๋Š” ์—ฌ๋Ÿฌ ๋ฐ๋ชฌ๊ณผ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌs

  • ๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
  • ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์€ ๋„์ปค ํ—ˆ๋ธŒ์ด๋‹ค.
  • ๋„์ปค ํ—ˆ๋ธŒ์—๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ณ  ์—…๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌผ๋ก  ๊ฐœ์ธ์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์šด์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

๋„์ปค ์˜ค๋ธŒ์ ํŠธ

์ด๋ฏธ์ง€

  • ์ด๋ฏธ์ง€๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ์ง€์‹œ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์ฝ๊ธฐ ์ „์šฉ ํŒŒ์ผ์ด๋‹ค.
  • ์ด๋ฏธ์ง€๋Š” ๋‹ค๋ฅธ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด ์ง์ ‘ ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ์จ๋„ ๋˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ๋‹ค ์จ๋„ ๋œ๋‹ค.
  • ๋„ค๊ฐ€ ์ง์ ‘ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด Dockerfile์— ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ ˆ์ฐจ์— ๋งž๊ฒŒ ๊ธฐ์ž…ํ•˜๊ณ  ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋๋‚œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ๊ฐ์ฒด์ด ํŒŒ์ผ์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋‚˜ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์œผ๋กœ๋ถ€ํ„ฐ ๋น„๊ต์  ์ž˜ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๋‹ค.
  • "docker run -it ubuntu /bin/bash" ์‹คํ–‰ ์‹œ, ๋‚ด๋ถ€ ๊ตฌ๋™ ๋‹จ๊ณ„
    1. ๋งŒ์•ฝ ๋„ค ์ปดํ“จํ„ฐ์— ubuntu ์ด๋ฏธ์ง€๊ฐ€ ์—†๋‹ค๋ฉด, ์„ค์ •๋œ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ๊ฐ€์„œ ๋ฐ›์•„์˜จ๋‹ค.
      • "docker pull ubuntu"๋ฅผ ์‹คํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ
    2. ๋„์ปค๊ฐ€ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
      • "docker container create"์„ ์‹คํ–‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ
    3. ๋„์ปค๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ƒ์„ฑํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.
      • ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ทธ๋ ‡๊ฒŒ ๋…๋ฆฝ๋œ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.
    4. ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ์— ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.
    5. ๋„์ปค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  /bin/bash ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
      • i ์˜ต์…˜์€ "running interactively"๋ฅผ ์˜๋ฏธํ•œ๋‹ค
      • t ์˜ต์…˜์€ "attached to your terminal"์„ ์˜๋ฏธํ•œ๋‹ค.
    6. ๋งŒ์•ฝ ๋‹น์‹ ์ด "exit"์„ ์น˜์ผ  ์ปจํ…Œ์ด๋„ˆ๋Š” ์ค‘์ง€๋˜์ง€๋งŒ ์‚ญ์ œ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

๐ŸŽŸ ๋‚ด๋ถ€ ๊ธฐ์ˆ 

  • ๋„์ปค๋Š” Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด์„œ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šคs

  • ๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋…๋ฆฝ๋œ workspace๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์”๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ํ•˜๋‚˜๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์กฐํ•ฉ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    1. PID: process isolation
    2. NET: managing network interfaces
    3. IPC: managing access to IPC(Inter Process Communication) resources
    4. MNT: managing filesystem mount points
    5. UTS: isolating kernel and version identifiers(Unix Timesharing System)

์ปจํŠธ๋กค ๊ทธ๋ฃนs

  • ๋„์ปค ์—”์ง„์€ cgroups๋ผ๋Š” ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Š” ๋„์ปค ์—”์ง„์ด ํ•˜๋“œ์›จ์–ด๋ฅผ ์ปจํ…Œ์ด๋„ˆ ๋ณ„๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

ํ†ตํ•ฉ ํŒŒ์ผ ์‹œ์Šคํ…œs

  • ๋„์ปค ์—”์ง„์€ ํ†ตํ•ฉ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋ณ„๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ–๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ํฌ๋งท

  • ๋„์ปค ์—”์ง„์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์ปจํŠธ๋กค ๊ทธ๋ฃน ๊ทธ๋ฆฌ๊ณ  ํ†ตํ•ฉ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ์ปจํ…Œ์ด๋„ˆ ํฌ๋งท์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  • ๊ธฐ๋ณธ ์ปจํ…Œ์ด๋„ˆ ํฌ๋งท์€ libcontainer๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.
  • ์ถ”ํ›„ BSD jail ๊ธฐ๋Šฅ ๋“ฑ์„ ํ†ตํ•ฉํ•œ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ ํฌ๋งท์„ ์ œ๊ณตํ•  ์˜ˆ์ •์ด๋‹ค.
profile
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ ํŒŒ์ด์ฌ ๊ทธ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ์™€ ๋„คํŠธ์›Œํฌ

0๊ฐœ์˜ ๋Œ“๊ธ€