๐Ÿณ Docker ๋„Œ ๋ˆ„๊ตฌ๋ƒ?

์ด์ง€ํ›ˆยท2023๋…„ 2์›” 11์ผ

Docker

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

1. ๐Ÿณ Docker ๋ž€

๋„์ปคโ“
Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ฐ€์ƒํ™” ํ”Œ๋žซํผ

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

์ด๋ฏธ์ง€โ“
์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์— ํ•„์š”ํ•œ ํŒŒ์ผ๊ณผ ์„ค์ •๊ฐ’๋“ฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ

2. VM vs Docker

๐ŸฅŠ VM
๊ฐ€์ƒํ™” ๊ธฐ์ˆ ์€ ๋Œ€์ฒด๋กœ ํ•˜์ดํผ๋ฐ”์ด์ € ๊ธฐ๋ฐ˜์˜ ๊ฐ€์ƒํ™”๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ถ„ํ• ๋œ ๊ณต๊ฐ„์—์„œ, VM์ด๋ผ๋Š” ๋…๋ฆฝ๋œ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ณ , ํ˜ธ์ŠคํŠธ์‹œ์Šคํ…œ์—์„œ VM์— ๊น”๋ฆฐ ๊ฒŒ์ŠคํŠธOS๋ฅผ ๊ตฌ๋™๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์˜ˆ์‹œ) ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์—์„œ ์šฐ๋ถ„ํˆฌ, ์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค๋ฅผ Virtual Box๋กœ ๋Œ๋ฆฐ๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ

ยท VM : ์šฐ๋ถ„ํˆฌ, ์นผ๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ๊ณต๊ฐ„
ยท Host System OS : ์œˆ๋„์šฐ
ยท GuestOS : ์šฐ๋ถ„ํˆฌ, ์นผ๋ฆฌ ๋ฆฌ๋ˆ…์Šค
ยท Hypervisior : ๊ฒŒ์ŠคํŠธOS๋ฅผ ๊ตฌ๋™ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๐ŸฅŠ Docker

Docker ์ปจํ…Œ์ด๋„ˆ๋Š” HostOS์˜ ์ปค๋„์„ ๊ณต์œ ํ•œ๋‹ค.

Docker์—์„œ๋Š” ํ•˜๋‚˜์˜ ๋ฆฌ๋ˆ…์Šค์ปค๋„์„ ๊ณต์œ ํ•˜๊ณ ์žˆ๊ณ , ์ด๋•Œ๋ฌธ์— Host์—์„œ๋„ Container๋‚ด๋ถ€๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ๋‹ค

์—ฌ๊ธฐ์„œ ๋ช‡๊ฐ€์ง€ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค

Q1. HostOS์˜ ์ปค๋„์„ ๊ณต์œ ํ•˜๋Š”๋ฐ ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ• ๊นŒ?

Q2. ๋งŒ์•ฝ Host OS๋กœ ๋ฆฌ๋ˆ…์Šค๋ฅผ ์“ฐ๋Š”๊ฒƒ์ด ์•„๋‹Œ macOS / Windows๋ฅผ ์“ด๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ถ„๋ฆฌํ• ์ˆ˜ ์žˆ์„๊นŒ?

A1. Linux namespace๋ฅผ ์ด์šฉํ•ด ๊ตฌ๋ถ„ํ•œ๋‹ค

A2. DockerEngine์„ ์‚ฌ์šฉํ•œ๋‹ค

๐Ÿ’ก
Linux namespace
Linux namespace๋Š” ์ปค๋„์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฒฉ๋ฆฌ(Isolation)์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒํ™” ๊ธฐ์ˆ 

๐Ÿ’ก
DockerEngine
DockerEngine์€ ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ VM์ด๋‹ค.
DockerEngine์€ GuestOS๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ๊ณ , GuestOS๊ฐ€ ๋ฆฌ๋ˆ…์Šค๊ฐ€ ๋˜๋ฉด, macOS / Windows ๋Œ€์‹  HostOS๋กœ์จ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค

3. ๋„์ปค๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

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

ยท Scale-out
์Šค์ผ€์ผ ์•„์›ƒ(Scale-out)์€ ์žฅ๋น„๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ํ™•์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

๊ธฐ์กด ์„œ๋ฒ„๋งŒ์œผ๋กœ ์šฉ๋Ÿ‰์ด๋‚˜ ์„ฑ๋Šฅ์˜ ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ, ๋น„์Šทํ•œ ์‚ฌ์–‘์˜ ์„œ๋ฒ„๋ฅผ ์ถ”๊ฐ€๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ธฐ์กด ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ๋ถ„๋‹ดํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์˜ ํšจ๊ณผ๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ๋‚ด๊ฐ€ ์„œ๋ฒ„์—์„œ ๋ฐฐํฌํ•˜๊ณ  ์žˆ๋˜ ์„œ๋น„์Šค์˜ ์ธ๊ธฐ๊ฐ€ ๋งŽ์•„์ ธ ์„œ๋ฒ„๋ฅผ ๋Š˜๋ คํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์ด ๋•Œ ์ƒˆ๋กœ์šด ์„œ๋ฒ„์— ํ•˜๋‚˜ ํ•˜๋‚˜ ์ „ ์„œ๋ฒ„์—์„œ ์“ฐ๋˜ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด ๋งค์šฐ ๊ท€์ฐฎ์€ ์ผ์ด ๋  ๊ฒƒ์ด๋‹ค.

์ด ๋•Œ ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋ฏธ์ง€๋งŒ์„ ๊ฐ€์ ธ์™€ ์ƒˆ๋กœ์šด ์„œ๋ฒ„์— ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด ์‰ฝ๊ฒŒ ๋™์ผํ™˜ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

๐Ÿ“š ์ฐธ๊ณ 
https://kk-7790.tistory.com/135
https://jjongguet.tistory.com/79
https://tecoble.techcourse.co.kr/post/2021-10-12-scale-up-scale-out/

0๊ฐœ์˜ ๋Œ“๊ธ€