Home > Development tools and environments > ๐Ÿ› ๏ธ[๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ™˜๊ฒฝ] Docker์˜ ์ฃผ์š” ๋ชฉ์ .

๐Ÿ› ๏ธ[๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ™˜๊ฒฝ] Docker์˜ ์ฃผ์š” ๋ชฉ์ .
Development tools Enviroments Docker

๐Ÿ› ๏ธ[๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ํ™˜๊ฒฝ] Docker์˜ ์ฃผ์š” ๋ชฉ์ .

โญ๏ธ Docker์˜ ์ฃผ์š” ๋ชฉ์ ์€ โ€œ์–ด๋””์„œ๋“  ๋™์ผํ•˜๊ฒŒ ์‹คํ–‰๋˜๋Š”, ๊ฐ€๋ณ๊ณ  ๋น ๋ฅด๊ณ  ์ด์‹์„ฑ ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒโ€ ์ž…๋‹ˆ๋‹ค.

์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋น„์œ ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿง โ€œ๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž˜๋˜๋Š”๋ฐโ€ฆโ€ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์‚ฌ.

๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ๊ฒช๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž A๊ฐ€ ์ž์‹ ์˜ ๋…ธํŠธ๋ถ์—์„œ ์—ด์‹ฌํžˆ ์ฝ”๋“œ๋ฅผ ์งœ์„œ ๊ธฐ๋Šฅ์„ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทธ ์ฝ”๋“œ๋ฅผ ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž B์˜ ๋…ธํŠธ๋ถ์ด๋‚˜, ํ…Œ์ŠคํŠธ ์„œ๋ฒ„, ์‹ค์ œ ์šด์˜ ์„œ๋ฒ„๋กœ ์˜ฎ๊ธฐ๋ฉด ์˜จ๊ฐ– ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

* "์–ด? ์ €๋Š” ํŒŒ์ด์ฌ 3.8 ๋ฒ„์ „์ธ๋ฐ, ๊ฑฐ๊ธฐ๋Š” 3.9 ๋ฒ„์ „์ด๋„ค์š”."
* "ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์–ด์š”."
* "์šด์˜์ฒด์ œ๊ฐ€ ๋‹ฌ๋ผ์„œ ๊ฒฝ๋กœ ์„ค์ •์ด ๊ผฌ์˜€์–ด์š”."

์ด๊ฒƒ์ด ๋ฐ”๋กœ โ€œ๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ์ž˜ ๋˜๋Š”๋ฐโ€ฆ(It works on my machineโ€ฆ)โ€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ฆ Docker์˜ ํ•ด๊ฒฐ์ฑ…: ํ•ด์ƒ ์šด์†ก ์ปจํ…Œ์ด๋„ˆ

Docker๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด์ƒ ์šด์†ก ์ปจํ…Œ์ด๋„ˆ์™€ ๋˜‘๊ฐ™์€ ์•„์ด๋””์–ด๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

์–ด๋–ค ๋ฌผ๊ฑด์ด๋“  ์ด ํ‘œ์ค€ ์ปจํ…Œ์ด๋„ˆ์—๋งŒ ๋‹ด์œผ๋ฉด, ์ „ ์„ธ๊ณ„ ์–ด๋–ค ํ•ญ๊ตฌ์˜ ์–ด๋–ค ํฌ๋ ˆ์ธ, ํŠธ๋Ÿญ, ๊ธฐ์ฐจ๋กœ๋„ ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์šด์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Docker๊ฐ€ ๋ฐ”๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์„ธ๊ณ„์˜ โ€˜์ปจํ…Œ์ด๋„ˆโ€™ ์ž…๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ, ์ฆ‰ 1๏ธโƒฃ ์ฝ”๋“œ, 2๏ธโƒฃ ์‹คํ–‰ ํ™˜๊ฒฝ(๋Ÿฐํƒ€์ž„) 3๏ธโƒฃ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, 4๏ธโƒฃ ์„ค์ • ํŒŒ์ผ ๋“ฑ์„ ํ•˜๋‚˜๋กœ ์‹น ๋ฌถ์–ด์„œ โ€˜Docker ์ด๋ฏธ์ง€โ€™๋ผ๋Š” ํ‘œ์ค€ํ™”๋œ ์ƒ์ž์— ๋‹ด์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด โ€˜์ด๋ฏธ์ง€โ€™๋ฅผ ์‹คํ–‰ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ โ€˜Docker ์ปจํ…Œ์ด๋„ˆโ€™ ์ž…๋‹ˆ๋‹ค.


๐Ÿ“ฆ Docker์˜ ํ•ต์‹ฌ ๋ชฉ์  5๊ฐ€์ง€

  1. ํ™˜๊ฒฝ์˜ ์ผ๊ด€์„ฑ (Consistency):
    ยท ๊ฐœ๋ฐœ์ž์˜ ๋…ธํŠธ๋ถ, ํ…Œ์ŠคํŠธ ์„œ๋ฒ„, ์šด์˜ ์„œ๋ฒ„ ๋“ฑ ์–ด๋””์„œ๋“  ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. โ€œ๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋˜๋Š”๋ฐโ€ฆ โ€œ ๋ฌธ์ œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด์‹์„ฑ (Portability):
    ยท ํ•œ ๋ฒˆ Docker ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด๋‘๋ฉด, Docker๊ฐ€ ์„ค์น˜๋œ ์–ด๋–ค ์ปดํ“จํ„ฐ๋‚˜ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์—์„œ๋„ ์ˆ˜์ • ์—†์ด ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€œํ•œ ๋ฒˆ ๋นŒ๋“œํ•ด์„œ, ์–ด๋””์„œ๋“  ์‹คํ–‰ํ•œ๋‹ค(Build once, run anywhere).โ€

  3. ๊ฐ€๋ณ๊ณ  ๋น ๋ฅธ ์‹คํ–‰ (Lightweight & Fast):
    ยท ๊ธฐ์กด์˜ ๊ฐ€์ƒ๋จธ์‹ (VM)์ฒ˜๋Ÿผ ์šด์˜์ฒด์ œ(OS)๋ฅผ ํ†ต์งธ๋กœ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹™๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ OS๋Š” ๊ณต์œ ํ•˜๋ฉด์„œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ทธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๊ฐ€๋ณ๊ณ , ๋น ๋ฅด๋ฉฐ, ์ ์€ ์ž์›์„ ์†Œ๋ชจํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ฒฉ๋ฆฌ (Isolation):
    ยท ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋กœ ์™„์ „ํžˆ ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋„ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์ด ์ถฉ๋Œํ•  ๊ฑฑ์ •๋„ ์—†์Šต๋‹ˆ๋‹ค.

  5. ์†์‰ฌ์šด ํ™•์žฅ (Scalability):
    ยท ์‚ฌ์šฉ์ž๊ฐ€ ๋ชฐ๋ ค์„œ ๋” ๋งŽ์€ ์„œ๋ฒ„ ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•  ๋•Œ, ๋˜‘๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ช‡ ๊ฐœ ๋” ์‹คํ–‰ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ˜„๋Œ€์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ์ด ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ก Summary.

  • Docker์˜ ์ฃผ์š” ๋ชฉ์ ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ทธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ํ•จ๊ป˜ โ€˜ํฌ์žฅโ€™ํ•˜์—ฌ, ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋ฐฐํฌ, ์šด์˜์— ์ด๋ฅด๋Š” ์ „ ๊ณผ์ •์„ ๋” ๋น ๋ฅด๊ณ , ์•ˆ์ •์ ์ด๋ฉฐ, ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.