Skip to content

Latest commit

ย 

History

History
143 lines (89 loc) ยท 6.17 KB

Docker.md

File metadata and controls

143 lines (89 loc) ยท 6.17 KB

Docker

๋„์ปค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

2013๋…„ INC์—์„œ ์ถœ์‹œํ•œ ์˜คํ”ˆ ์†Œ์Šค ์ปจํ…Œ์ด๋„ˆ AWS, Google Clud Platform, MS Azure ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๊ณต์‹ ์ง€์›

์™œ ๋„์ปค๋ฅผ ์‚ฌ์šฉ ํ• ๊นŒ?

  • ๋ณต์žกํ•œ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฌถ์–ด์„œ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ํ•˜๋‚˜๋กœ ํ†ต์ผํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ(์ด๋ฏธ์ง€)๋ฅผ ์ „ ์„ธ๊ณ„ ์‚ฌ๋žŒ๋“ค๊ณผ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. => ๋ฆฌ๋ˆ…์Šค ์ปค๋„์—์„œ ์ œ๊ณตํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์„ ์ด์šฉ
  • Docker Hub๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€์ƒํ™”๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ€๋ฒผ์šด ๊ธฐ์ˆ 

๊ฐ€์ƒ ๋จธ์‹ ๊ณผ ๋„์ปค

  • ์ปดํ“จํ„ฐ ์•ˆ์—์„œ ์ปดํ“จํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์‹œ๋„(1960๋…„๋Œ€์— ๊ฐ€์ƒํ™” ๊ฐœ๋…์ด ๋“ฑ์žฅ) ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๋ฉด์„œ PC์—์„œ๋„ ํ”ํžˆ ์‚ฌ์šฉ

  • ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ์— ๋”ฐ๋ผ ์„œ๋ฒ„๊ฐ€ Task์ˆ˜ํ–‰์„ ํ•˜์ง€์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋” ๋งŽ์•„์ง€๊ฒŒ๋˜์—ˆ์Œ. ๊ทธ๋ž˜์„œ ์„œ๋ฒ„์˜ Task๋ฅผ ๋”์šฑ ๋” ์‚ฌ์šฉ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋‚ด๋‹ค๊ฐ€, ์„œ๋ฒ„์— ๊ฐ€์ƒ ๋จธ์‹ ์„ ์—ฌ๋Ÿฌ๊ฐœ ๋„์›Œ์„œ ์ผ์„ ๋”์‹œํ‚ค๊ธฐ๋กœ ํ•˜์˜€์Œ.

  • ์„œ๋ฒ„๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ์„œ๋ฒ„์ž์ฒด๋ฅผ ๊ฐ€์ƒ๋จธ์‹ ์— ์ง‘์–ด ๋„ฃ์–ด์„œ ๋Œ๋ฆฌ๊ธฐ๋กœํ•˜์—ฌ ๊ฐ€์ƒ ๋จธ์‹ ์— ๊ฐ์ข… ์„œ๋ฒ„ํ”„๋กœ๊ทธ๋žจ, DB๋“ฑ์„ ์„ค์น˜ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ์‹คํ–‰

  • ๋ฏธ๋ฆฌ๊ตฌ์ถ•ํ•œ ๊ฐ€์ƒ ๋จธ์‹  ์ด๋ฏธ์ง€๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋กœ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ์Œ => ๊ฐ€์ƒํ™”๊ธฐ์ˆ 

  • ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ์ž„๋Œ€ํ•ด์ฃผ๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค

๊ฐ€์ƒ๋จธ์‹ ์˜ ๋ฌธ์ œ์ 

OS ์ปดํ“จํ„ฐ ์ „์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋ฒ„๋ฆฌ๋ฏ€๋กœ, ๊ฐ์ข… ์„ฑ๋Šฅ ์†์‹ค์ด ๋ฐœ์ƒ ์ธํ…”, AMD๋Š” CPU ์•ˆ์— ๊ฐ€์ƒํ™” ๊ธฐ๋Šฅ์„ ๋„ฃ๊ธฐ ์‹œ์ž‘

๊ฐ€์ƒ๋จธ์‹  ๋ฌธ์ œ์  ํ•ด๊ฒฐ

ํ˜ธ์ŠคํŠธ์™€ ์ปค๋„์„ ๊ณต์œ ํ•˜๋Š” ๋ฐ˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ด ๋“ฑ์žฅํ•œ๋‹ค.

docker1

๊ฐ€์ƒ ๋จธ์‹ ์€ ์™„์ „ํ•œ ์ปดํ“จํ„ฐ -> ํ•ญ์ƒ ๊ฒŒ์ŠคํŠธ OS๋ฅผ ์„ค์น˜ํ•ด์•ผํ•จ ์ด๋ฏธ์ง€ ์•ˆ์— OS๊ฐ€ ํฌํ•จ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์ด ์ปค์ง ๋„คํŠธ์›Œํฌ๋กœ ๊ฐ€์ƒํ™” ์ด๋ฏธ์ง€ ๋ถ€๋‹ด์Šค๋Ÿฌ์›€ ์˜คํ”ˆ์†Œ์Šค ๊ฐ€์ƒํ™” ์†Œํ”„ํŠธ์›จ์–ด๋Š” OS ๊ฐ€์ƒํ™”์—๋งŒ ์ฃผ๋ ฅํ•˜๋ฏ€๋กœ => ๋ฐฐํฌ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ๋ถ€์กฑ

๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ

์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๊ฐ€์ƒ๊ณต๊ฐ„์„ ๋งŒ๋“ค์ง€๋งŒ, ์‹คํ–‰ ํŒŒ์ผ์„ ํ˜ธ์ŠคํŠธ์—์„œ ์ง์ ‘ ์‹คํ–‰ ๋ฆฌ๋ˆ…์Šค ์ปค๋„์˜ cgroups์™€ namespaces๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ์ˆ  ๊ฐ€์ƒํ™”๊ฐ€ ์•„๋‹Œ ๊ฒฉ๋ฆฌ docker1

๋„์ปค๋Š” ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์ดˆ๊ธฐ์—๋Š” LXC(Linux Container)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„
  • ๋ฒ„์ „ 0.9๋ถ€ํ„ฐ๋Š” LXC๋ฅผ ๋Œ€์‹ ํ•˜๋Š” libcontainer๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ์‚ฌ์šฉ
  • ์‹คํ–‰ ์˜ต์…˜์œผ๋กœ ์„ ํƒ ๊ฐ€๋Šฅ

๋„์ปค์˜ ํŠน์ง•

๋„์ปค๋Š” ๊ฒŒ์ŠคํŠธ OS๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์Œ

  • ์ด๋ฏธ์ง€์— ์„œ๋ฒ„ ์šด์˜์„ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๊ฒฉ๋ฆฌํ•ด์„œ ์„ค์น˜
  • ์ด๋ฏธ์ง€ ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ์ค„์–ด๋“ฆ
  • ํ˜ธ์ŠคํŠธ์™€ OS ์ž์›(์‹œ์Šคํ…œ ์ฝœ)์„ ๊ณต์œ  ๋„์ปค๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์ƒํ™” ๊ณ„์ธต์ด ์—†์Œ
  • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ, ํŒŒ์ผ ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ ์ „์†ก ์†๋„๊ฐ€ ๊ฐ€์ƒ ๋จธ์‹ ํ•ด ๋น„ํ•ด ์›”๋“ฑํžˆ ๋น ๋ฆ„
  • ํ˜ธ์ŠคํŠธ์™€ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š์Œ(์˜ค์ฐจ ๋ฒ”์œ„ ์•ˆ) ์ด๋ฏธ์ง€ ๋ฒ„์ „ ๊ด€๋ฆฌ๋„ ์ œ๊ณตํ•˜๊ณ  ์ค‘์•™ ์ €์žฅ์†Œ์— ์ด๋ฏธ์ง€๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ(push / pull)
  • Github์™€ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๋„์ปค์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ ํ•˜๋Š” Docker Hub์ œ๊ณต(Github ์ฒ˜๋Ÿผ ์œ ๋ฃŒ ์ €์žฅ์†Œ๋„ ์ œ๊ณต)
  • ๋‹ค์–‘ํ•œ API ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์›ํ•˜๋Š” ๋งŒํผ ์ž๋™ํ™” ๊ฐ€๋Šฅ ๊ฐœ๋ฐœ๊ณผ ์„œ๋ฒ„ ์šด์˜์— ๋งค์šฐ ์œ ์šฉ

๋„์ปค ์ด๋ฏธ์ง€๋ž€?

์ด๋ฏธ์ง€๋Š” ์„œ๋น„์Šค ์šด์˜์— ํ•„์š”ํ•œ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ, ์†Œ์Šค ์ฝ”๋“œ, ์ปดํŒŒ์ผ๋œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋ฌถ์€ ํ˜•ํƒœ (์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ๊ณ  ๋ฐ›๋Š”๊ฑด ์ด๋ฏธ์ง€)

๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ž€?

์ปจํ…Œ์ด๋„ˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ์ƒํƒœ ์ด๋ฏธ์ง€๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

  • ์šด์˜์ฒด์ œ๋กœ ๋น„์œ ํ•˜๋ฉด ์ด๋ฏธ์ง€๋Š” ์‹คํ–‰ ํŒŒ์ผ์ด๊ณ , ์ปจํ…Œ์ด๋„ˆ๋Š” ํ”„๋กœ์„ธ์Šค

๋„์ปค๋Š” ์ด๋ฏธ์ง€์˜ ๋ฐ”๋€ ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜์ง€?

์œ ๋‹ˆ์˜จ ํŒŒ์ผ ์‹œ์Šคํ…œ ํ˜•์‹(aufs, btrfs, devicemapper) docker3

๋„์ปค๋Š” ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์—์„œ ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰ํ•  ๋•Œ๋Š” ๋ฒ ์ด์Šค ์ด๋ฏธ์ง€์™€ ๋ฐ”๋€ ๋ถ€๋ถ„์„ ํ•ฉ์ณ์„œ ์‹คํ–‰ Docker Hub ๋ฐ ๊ฐœ์ธ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ณต์œ  ํ• ๋•Œ ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋„์ปค

docker4

์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ์„ ์ด๋ฏธ์ง€๋กœ ์ƒ์„ฑํ•œ ๋’ค ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜์—ฌ ์‹คํ–‰ ์„œ๋น„์Šค๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๋ฉด ์šด์˜ ํ™˜๊ฒฝ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐํฌ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ ์„œ๋ฒ„๋ฅผ ์“ฐ๊ณ  ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Immutable Infrastructure๋„ ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ ์ด๋ฏธ์ง€๋ฅผ ํ•œ๋ฒˆ ์“ฐ๊ณ  ๋ฒ„๋ฆผ.

Immutable Infrastructure

ํ˜ธ์ŠคํŠธ OS์™€ ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ(์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ, ์†Œ์Šค ์ฝ”๋“œ, ์ปดํŒŒ์ผ ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ)์„ ๋ถ„๋ฆฌ ํ•œ ๋ฒˆ ์„ค์ •ํ•œ ์šด์˜ ํ™˜๊ฒฝ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค(Immutable)

Immutable Infrastructure ์žฅ์ 

  • ํŽธ๋ฆฌํ•œ ๊ด€๋ฆฌ
  1. ์„œ๋น„์Šค ํ™˜๊ฒฝ ์ด๋ฏธ์ง€๋งŒ ๊ด€๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.
  2. ์ค‘์•™ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•œ ์ฒด๊ฒŒ์ ์ธ ๋ฐฐํฌ์™€ ๊ด€๋ฆฌ
  3. ์ด๋ฏธ์ง€ ์ƒ์„ฑ์— ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ํ™œ์šฉ
  • ํ™•์žฅ์„ฑ
  1. ์ด๋ฏธ์ง€ ํ•˜๋‚˜๋กœ ์„œ๋ฒ„๋ฅผ ๊ณ„์† ์ฐ์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ
  2. ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์˜ ์ž๋™ํ™•์žฅ(Auto Scaling)๊ธฐ๋Šฅ๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์†์‰ฝ๊ฒŒ ์„œ๋น„์Šค ํ™•์žฅ
  • ํ…Œ์ŠคํŠธ
  1. ๊ฐœ๋ฐœ์ž PC,ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰๋งŒ ํ•˜๋ฉด ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•œ ํ™˜๊ฒฝ์ด ๊ตฌ์„ฑ๋œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ ๊ฐ„ํŽธ
  • ๊ฐ€๋ณ๋‹ค
  1. ์šด์˜์ฒด์ œ์™€ ์„œ๋น„์Šค ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ€๋ณ๊ณ (Lightweight)์–ด๋””์„œ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ(Portable)ํ™˜๊ฒฝ ์ œ๊ณต

๋„์ปค์˜ ์š”์•ฝ

docker5 ๋„์ปค์˜ ๊ณ ๋ž˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹ฃ๊ณ  ๋‹ค๋‹ˆ๋Š” ๊ณ ๋ž˜ ๊ณ ๋ž˜๋Š” ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ(์ด๋ฏธ์ง€)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ด๋ฏธ์ง€ ์ €์žฅ๊ณผ ๋ฐฐํฌ(์šด๋ฐ˜)์„ ์˜๋ฏธํ•œ๋‹ค. ๋„์ปค(Docker)๋Š” ๋ถ€๋‘ ๋…ธ๋™์ž๋ฅผ ๋œปํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋„์ปค์˜ ๊ธฐ๋Šฅ๊ณผ ๋น„์Šทํ•จ

docker6

๋„์ปค๋Š” ์„œ๋น„์Šค ์šด์˜ ํ™˜๊ฒฝ์„ ๋ฌถ์–ด์„œ ์†์‰ฝ๊ฒŒ ๋ฐฐํฌํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ 

Reference

https://www.slideshare.net/pyrasis/docker-fordummies-44424016