Deploy๐ŸŽ

Docker ๋ž€?

hae02y 2023. 8. 3. 20:26
๋ฐ˜์‘ํ˜•

Docker

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™” ๋„๊ตฌ์ด๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ๋ผ๋Š” ๋‹จ์œ„๋กœ ๊ฒฉ๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ธฐ์ˆ ์„ ๋งํ•œ๋‹ค. ๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฌด์—‡์ผ๊นŒ?

 

Container

์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์ค‘ ํ•œ๊ฐ€์ง€์ด๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” ์šด์˜์ฒด์ œ ์œ„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•œ๋‹ค. ๊ธฐ์กด์˜ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์€ ๊ฐ€์ƒ๋จธ์‹ (vm)์„ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ๋™ํ•˜๋Š”๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ–ˆ๋‹ค. ์™ผ์ชฝ๊ทธ๋ฆผ์„ ๋ณด๋ฉด hypervisor ์œ„์— ๋˜๋‹ค๋ฅธ OS๋ฅผ ํ• ๋‹นํ•˜๊ณ , ๊ทธ OS์œ„์—์„œ ๋™์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. Hypervisor ์œ„์—์„œ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” VM๋“ค์€ ๊ฐ๊ฐ์„ ์ปดํ“จํ„ฐ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ฆ‰, OS์„ค์น˜๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด OS๋ฅผ ํ• ๋‹นํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๊ณ , ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ๊ฒฉ๋ฆฌ ํ™˜๊ฒฝ์ด ์„ธํŒ…๋œ๋‹ค. 

 

์ž๊ทธ๋Ÿผ ๋‹ค์‹œํ•œ๋ฒˆ ๋„์ปค์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. 

 

๋„์ปค๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™” ๋„๊ตฌ๋ผ๊ณ  ํ•˜์˜€๋‹ค. ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์ธ LXC(Linux Container)๋ฅผ ๊ธฐ๋ฐ˜๊ธฐ์ˆ ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ ๋‹จ์œ„๋กœ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ณ  ๋ฐฐํฌํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ์šด์˜์ฒด์ œ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์†์‰ฝ๊ฒŒ ๋นŒ๋“œ, ๋ฐฐํฌ, ๊ด€๋ฆฌํ• ์ˆ˜์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋ฒ ํฌ, ๊ด€๋ฆฌํ• ์ˆ˜์žˆ๋‹ค.

 

Docker Architecture

๋„์ปค๋Š” server - client ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋„์ปค์˜ ์ „์ฒด์ ์ธ flow๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅ(client)ํ•˜๋ฉด daemon์— ์ „๋‹ฌ์ด ๋˜๊ณ , daemon์€ images์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์žˆ์œผ๋ฉด ์‹คํ–‰ํ•˜๊ณ , ์—†์œผ๋ฉด registry์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์™€์„œ ์‹คํ–‰ํ•œ๋‹ค.

๋„์ปค ๋ฐ๋ชฌ(Docker daemon)

  • ๋„์ปค ์—”์ง„์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ด๋‹ค.
  • ๋„์ปค ํ˜ธ์ŠคํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑ, ์‹œ์ž‘, ์ค‘์ง€, ์‚ญ์ œํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์™ธ๋ถ€์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ  ๋นŒ๋“œํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋„์ปค ํด๋ผ์ด์–ธํŠธ(Docker Client)

๋„์ปค ํด๋ผ์ด์–ธํŠธ๋Š” ๋„์ปค์™€ ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•œ๋‹ค. ๋„์ปค ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Docker daemon์œผ๋กœ ๋ณด๋‚ด์–ด ์‹คํ–‰ํ•œ๋‹ค. ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฉด, docker API๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ์„ ํ•˜๊ณ , ํ•œ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‘๊ฐœ ์ด์ƒ์˜ ๋„์ปค์™€ Daemonํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(Docker Registry)

๋„์ปค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋„์ปค์˜ ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ด๋‹ค. ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๊ณ , ๊ณต์šฉ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ธ Docker hub ๋„ ์žˆ๋‹ค.

 

Docker Object

๋„์ปค ์ด๋ฏธ์ง€(Docker Image)

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

๋„์ปค ์ปจํ…Œ์ด๋„ˆ(Docker Container)

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋„์ปค์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ์ฒด ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•œ ์ƒํƒœ์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋‹จ์œ„์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด, ํ˜ธ์ŠคํŠธ์˜ OS์— ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ํ˜ธ์ŠคํŠธ OS์™€, ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋“ค๊ณผ ๋ถ„๋ฆฌ๋œ ์ƒํƒœ์ด๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” ์‰ฝ๊ฒŒ ๊ณต์œ ํ• ์ˆ˜์žˆ๊ณ , ์ด๋กœ ์ธํ•ด ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋™์ผํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ• ์ˆ˜์žˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•