Docker

์ปจํ…Œ์ด๋„ˆ๋ž€ ๋ฌด์—‡์ธ๊ฐ€

๋ชจ๋“ˆํ™” ๋˜๊ณ  ๊ฒฉ๋ฆฌ๋œ ์ปดํ“จํŒ… ๊ณต๊ฐ„, ์ปดํ“จํŒ… ํ™˜๊ฒฝ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋‚ฎ์€ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ์˜์กด์„ฑ์„ ๊ฐ€์ง„๋‹ค.

์ปจํ…Œ์ด๋„ˆ ํŠน์ง•

๊ฒฉ๋ฆฌ(isolation)

  • ํ”„๋กœ์„ธ์Šค ์ž์ฒด๋ฅผ ๊ฒฉ๋ฆฌํ•˜์—ฌ ์‹คํ–‰ ์•ˆ์ „์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.

  • ์ƒํ˜ธ ๊ฐ„์„ญ์„ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค.

๋…๋ฆฝ(independent)

  • ๊ฒŒ์ŠคํŠธOS(Guest OS)๊ฐ€ Container์— ํฌํ•จ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ตฌ๋™ ๋ฐฉ๋ฒ•์ด ๊ฐ„๋‹จํ•˜๋‹ค.

  • ๊ฒŒ์ŠคํŠธOS๋กœ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์Šค์ผ€์ผ๋ง(scaling)

  • ์ˆ˜์š”์— ๋งž์ถฐ ์Šค์ผ€์ผ๋ง์„ ๊ฐ„๋‹จํžˆ ํ• ์ˆ˜ ์žˆ๋‹ค.

  • ๋น„์ฆˆ๋‹ˆ์Šค๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐ„๋‹จํžˆ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ˜๋Œ€๋กœ ์ด์Šˆ ๋ฐœ์ƒ ์‹œ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ๋„ ์‹ ์†ํžˆ ๊ฐ€๋Šฅํ•˜๋‹ค

์ปจํ…Œ์ด๋„ˆ vs Virtual Machine

Virtual Machine

๊ธฐ์กด ๊ฐ€์ƒํ™”์—์„œ๋Š” ๊ฐ๊ฐ์˜ ๊ฐ€์ƒํ™”์— ๊ฒŒ์ŠคํŠธ OS ๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ  ์ด๋ฅผ ์ค‘๊ฐ„ ๊ด€๋ฆฌํ•˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €(Hypervisor)๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋Š” ๊ฐ ๊ฐ€์ƒ๋จธ์‹ ์— ์™„๋ฒฝํ•œ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜์ง€๋งŒ, ๊ฐ€์ƒ๋จธ์‹ ์˜ ์šฉ๋Ÿ‰ ์ฆ๊ฐ€, ๊ฒŒ์ŠคํŠธOS์˜ ์ž์›ํ•„์š”ํ•˜๋‹ค. ์ด๋ฅผ โ€˜ํ•˜๋“œ์›จ์–ด ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™”โ€™ ๋ผ๊ณ  ํ•œ๋‹ค. ์‹คํ–‰์ค‘์ธ ๊ฐ€์ƒ๋จธ์‹ ๋“ค์ด ๋ชจ๋‘ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ํ†ตํ•ด ๋””์Šคํฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—…์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒ

Container ๋ฐฉ์‹

ํ•˜์ดํผ๋ฐ”์ด์ €, ๊ฒŒ์ŠคํŠธOS๋ฅผ ์—†์• ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ๊ฐ€์ƒํ™” ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋Ÿ‰์ด ์ ๋‹ค. ์ด๋ฅผ โ€˜์šด์˜์ฒด์ œ ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™”โ€™ ๋ผ๊ณ  ํ•œ๋‹ค.

๊ฒฝ๋Ÿ‰ํ™”๋œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์–ป๋Š” ์ด์ 

๋” ๋งŽ์€ ์‘์šฉํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ธฐ์กด์˜ VM ๋ฐฉ์‹์€ ๊ฒŒ์ŠคํŠธ OS๊นŒ์ง€ ๊ฐ€์ƒ๋จธ์‹ ์— ํฌํ•จ์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์—, ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ€์ƒ๋จธ์‹ ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ Container๋ฐฉ์‹์€ ๊ฒŒ์ŠคํŠธ OS์™€ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ œ์™ธํ•˜๋ฏ€๋กœ์จ ์‹คํ–‰์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ , ์ด๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์„œ๋น„์Šค๋ฅผ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์˜€๋‹ค.

๊ตฌ๋™๋ฐฉ์‹์ด ๊ฐ„๋‹จํ•˜๋‹ค.

Container๋Š” ์‹คํ–‰์‹œ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋“ค์ด ํŒจํ‚ค์ง€ํ™” ๋˜์–ด ์žˆ์–ด์„œ, ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ VM ๋ฐฉ์‹์€ ์ƒˆ๋กœ์šด VM์„ ์‹คํ–‰ํ•˜๊ณ  ํ•ด๋‹น VM์—์„œ ์‹คํ–‰์ž์›์„ ํ• ๋‹นํ•œ ๋‹ค์Œ ๊ฒŒ์ŠคํŠธOS๋ฅผ ๋ถ€ํŒ…ํ•œ ํ›„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

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

Container ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™” ์†Œํ”„ํŠธ์›จ์–ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

๋ฆฌ๋ˆ…์Šค์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์†Œํ”„ํŠธ์›จ์–ด ์ปจํ…Œ์ด๋„ˆ ์•ˆ์— ๋ฐฐ์น˜์‹œํ‚ค๋Š” ์ผ์„ ์ž๋™ํ™” ํ•˜๋Š” ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธโ€Œ์ด๋‹ค.

๊ธฐ์กด LXC(LinuX Container) ๊ธฐ์ˆ ์— ์ด์‹์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ฐ์ดํ„ฐ์™€ ์ฝ”๋“œ์˜ ๋ถ„์‚ฐ๋œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค.

Image ๊ธฐ๋ฐ˜์˜ Container

์ด๋ฏธ์ง€ : Container ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ, ์„ค์ • ๊ฐ’๋“ค์„ ๋ฏธ๋ฆฌ ์ •์˜

๊ฐ™์€ ์ด๋ฏธ์ง€์—์„œ ๋‹ค์ˆ˜์˜ Container ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค

  • ๊ฐ™์€ ์ด๋ฏธ์ง€์—์„œ ๋‹ค์ˆ˜์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์‚ญ์ œ ๋˜๋”๋ผ๋„ ์ด๋ฏธ์ง€๋Š” ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋œ๋‹ค.

  • ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋œ ๊ฐ’์€ ์ปจํ…Œ์ด๋„ˆ์— ์ €์žฅ๋˜๊ณ , ์ด๋ฏธ์ง€์˜ ์›๋ณธ์€ ๋ณด์กด๋œ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด์„œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ์‹คํ–‰ํ•œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์€?

Container์˜ ๊ด€๋ฆฌ ๋„๊ตฌ์˜ ํ•„์š”์„ฑ

  • Container ๊ฒฝ๋Ÿ‰ํ™”๋กœ ๊ด€๋ฆฌ, ์šด์˜์˜ ์–ด๋ ค์›€ ์ฆ๊ฐ€๋˜์—ˆ๋‹ค.

  • ์ƒ์„ฑ, ์†Œ๋ฉธ, ์‹œ์ž‘๊ณผ ์ค‘๋‹จ ์‹œ์  ์ œ์–ด, ์Šค์ผ€์ค„๋ง, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ํด๋Ÿฌ์Šคํ„ฐ๋ง ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜์˜€๋‹ค.

Container Orchestration ์ œ๊ณต๊ธฐ๋Šฅ

Service discovery

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

Scaling

  • Load Balancing : ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์˜ ์ปดํ“จํŒ… ์ž์› ์‚ฌ์šฉ๋Ÿ‰์˜ ์„ค์ • ๋ฐ ์ž๋™ ๋ฐฐ๋ถ„์ด ๊ฐ€๋Šฅํ•˜๋‹ค

  • Scheduling : ๋Š˜์–ด๋‚œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ ํ•ฉํ•œ ์„œ๋ฒ„์— ๋‚˜๋ˆ„์–ด ๋ฐฐํฌํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋  ๊ฒฝ์šฐ ์‹คํ–‰ ์ค‘์ด๋˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ๊ตฌ๋™ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

Clustering

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๋ฌถ์–ด ํ•˜๋‚˜์˜ ์„œ๋ฒ„์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ฑฐ๋‚˜, ๊ฐ€์ƒ ๋„คํŠธ์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ฐ์žฌ๋œ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐ ์‹œ์ผœ์ค€๋‹ค.

Logging/Monitoring

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๋ฅผ ๋™์‹œ์— ๊ด€๋ฆฌํ•  ๊ฒฝ์šฐ ํ•œ ๊ณณ์—์„œ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๊ณ  ๋กœ๊ทธ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

๋„์ปค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋น„๊ต

Docker Swam

  • Docker์—์„œ ์ถœ์‹œํ•˜์˜€๋‹ค.

  • Docker ์ปจํ…Œ์ด๋„ˆ ์šฉ Docker ๊ณ ์œ  ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋‹ค.

  • Docker native api ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ค์น˜ ๋˜๋Š” ์„ค์ •์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค.

  • ์•ฝ๊ฐ„ ๋ถˆ์•ˆ์ • ํ•˜๊ณ , ์•„์ง๋„ ํ™œ๋ฐœํ•˜๊ฒŒ ๋ฆด๋ฆฌ์ฆˆ ์ค‘์ด๋‹ค.

K8S

  • ๊ตฌ๊ธ€์—์„œ ๋งŒ๋“  ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜์ด๋‹ค.

  • ์„ค์ •์ด ์กฐ๊ธˆ ๋ณต์žกํ•˜๋‚˜, yaml ํŒŒ์ผ์„ ํ™œ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋งค์šฐ ์•ˆ์ •์ ์ด๊ณ  ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•œ ๋ฐฐํฌ ๊ด€๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค.

Memos

  • ์†Œ๊ทœ๋ชจ์ผ ๊ฒฝ์šฐ ์„ค์น˜์™€ ์„ค์ •์ด ๊ฐ„ํŽธํ•˜์ง€๋งŒ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ ์ˆ˜๋ก ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ด ๋ณต์žกํ•˜๋‹ค.

  • JSON ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์„ค์ • ํŒŒ์ผ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋งค์šฐ ์•ˆ์ •์ ์ด์–ด์„œ ํฐ ๊ทœ๋ชจ์˜ ํด๋Ÿฌ์Šคํ„ฐ์—๋„ ์ ํ•ฉํ•˜๋‹ค.

์ฐธ๊ณ 

Last updated