Docker

Docker

๐Ÿš€ What is Docker?

โ–บ What is a container and what problems does it solve?

ํ•„์š”ํ•œ ๋ชจ๋“  ์ข…์†์„ฑ ๋ฐ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŒจํ‚ค์ง•ํ•˜๋Š” ๋ฐฉ๋ฒ•

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

ํ˜ธ์ŠคํŠธ OS์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌ์‹œํ‚ค๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ๊ณ  ๊ณ ์†์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

โ–บ Virtualization and Linux Container

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ๋‹จ ๊ฐ€์ƒํ™”๋ผ๋Š” ๊ฐœ๋…์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.

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

๊ฐ€์ƒํ™”๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€์ƒ๋จธ์‹ (VM)์„ ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

VM์€ ํ˜ธ์ŠคํŠธ ์šด์˜์ฒด์ œ์—์„œ ๊ตฌ๋™๋˜๋ฉฐ ๊ทธ ๋ฐ”ํƒ•์ด ๋˜๋Š” ํ•˜๋“œ์›จ์–ด์— ๊ฐ€์ƒ์œผ๋กœ ์•ก์„ธ์Šคํ•˜๋Š” Guest ์šด์˜์ฒด์ œ๋ฅผ ๊ฐ€์ง€๋Š” ์ผ์ข…์˜ ๊ฒฉ๋ฆฌ๋œ ๋จธ์‹ ์ด๋‹ค.

์‰ฝ๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ.

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

๋ฐ”๋กœ ๊ฐ€์ƒํ™” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋‹ค๋Š” ์ ์ด๋‹ค.

๊ธฐ์กด์˜ VM์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ€์ƒํ™” ๋ฐฉ์‹์€ ์ฃผ๋กœ OS๋ฅผ ๊ฐ€์ƒํ™”ํ•œ๋‹ค.

Host OS๊ฐ€ ์กด์žฌํ•˜๊ณ  ๊ทธ ์œ„์— Guest OS ์ „์ฒด๋ฅผ ๊ฐ€์ƒํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ OS๊ฐ€ ๊ฐ€์ƒ๋จธ์‹  ์ด๋ฏธ์ง€์— ํฌํ•จ๋˜์–ด์•ผ๋งŒ ํ•˜๊ณ  ์ด๋Š” ์šฉ๋Ÿ‰์ด ๋งค์šฐ ํด ์ˆ˜๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์˜ ๋ฐœ์ „์œผ๋กœ ์„ฑ๋Šฅ์ด ์ข‹์•„์กŒ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ, ์ „๊ฐ€์ƒํ™”์™€ ๋ฐ˜๊ฐ€์ƒํ™” ๋“ฑ Guest OS๋ฅผ ํฌํ•จํ•˜์—ฌ ์šด์˜ํ•˜๋Š” ๋ฐฉ์‹์€ ์—ฌ์ „ํžˆ ํ•˜๋“œ์›จ์–ด ์„ฑ๋Šฅ์„ 100% ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์—†๋‹ค.

Virtualization vs Container

ํ•˜์ง€๋งŒ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์€ ๋‹ค๋ฅด๋‹ค.

์ปจํ…Œ์ด๋„ˆ๋Š” ๋ณ„๋„์˜ ํ•˜๋“œ์›จ์–ด ์—๋ฎฌ๋ ˆ์ด์…˜ ์—†์ด ๋ฆฌ๋ˆ…์Šค ์ปค๋„์„ ๊ณต์œ ํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ Guest OS๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ด๋Ÿฐ ๊ฐ€์ƒํ™”๋ฅผ '์šด์˜์ฒด์ œ ์ˆ˜์ค€์˜ ๊ฐ€์ƒํ™”'๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ๊นŒ๋‹ญ์€ ๋ฐ”๋กœ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โ–บ ํ”„๋กœ์„ธ์Šค ๊ฒฉ๋ฆฌ

๋ฆฌ๋ˆ…์Šค(Linux) ์šด์˜์ฒด์ œ๋Š” ์ปค๋„ ๊ณต๊ฐ„๊ณผ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.

์ด ์ค‘ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์„ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ํ”„๋กœ์„ธ์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋…๋ฆฝ๋œ ๊ณต๊ฐ„์—์„œ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜์—ฌ ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

Docker๋ฅผ Linux์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” Linux์˜(์ •ํ™•ํ•˜๊ฒŒ๋Š” ์ปค๋„) ๋‹ค์Œ ๊ธฐ์ˆ ๋“ค์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

- Linux Namespace

๋ฆฌ๋ˆ…์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํŒŒ์ผ์‹œ์Šคํ…œ, ๋„คํŠธ์›Œํฌ, ์œ ์ €, ํ˜ธ์ŠคํŠธ๋„ค์ž„ ๋“ฑ์— ๋Œ€ํ•ด์„œ ์‹œ์Šคํ…œ์ด ๋…๋ฆฝ๋ทฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค.

Linux Namspace

- Linux cgroup(Control group)

Linux cgroups

๋ฆฌ๋ˆ…์Šค ์ปจํŠธ๋กค ๊ทธ๋ฃน์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค(CPU, ๋ฉ”๋ชจ๋ฆฌ, I/O, ๋„คํŠธ์›Œํฌ ๋Œ€์—ญ)๋“ฑ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค์— ๋ฆฌ์†Œ์Šค๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์—์„œ๋Š” VM์ด ์‹ค์ œ ๋ฌผ๋ฆฌ ํ•˜๋“œ์›จ์–ด๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธ ํ•˜๋ฏ€๋กœ, OS๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ(LXC)์—์„œ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ˜ธ์ŠคํŠธ OS์—์„œ ๋ฐ”๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋‹ค๋ฅธ ์ ์€ ๊ทธ๋ฃนํ™”๋ฅผ ํ†ตํ•ด ๋‹จ์ ˆ๋œ ๊ณต๊ฐ„์—์„œ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

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

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

Last updated