# 3.VM vs Container
# 1. VM ๊ณผ Container์ ์ฐจ์ด
# ์์คํ ๊ตฌ์กฐ์์ ์ค๋ ์ฐจ์ด์ ?
- ๊ณตํต์ ์ผ๋ก
ํ๋์ ์๋ฒ
๊ฐ ์์ - ํ ์๋ฒ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ด๋ค ์ด์์ฒด์ ๊ฐ ๋๊ฑด
Host OS
๊ฐ ์ฌ๋ผ๊ฐ
# VM์ ๊ฒฝ์ฐ
Host OS
์์ VM์ ๊ฐ์ํ ์์ผ์ฃผ๊ธฐ ์ํด ์ฌ๋ฌHypervisor
๊ฐ ์กด์ฌ- ์ด๋ฐ ๊ฒ๋ค์ ์ฌ์ฉํด์ ์ํ๋ ์ด์์ฒด์ ๋ก
Guest OS
๋ฅผ ์ฌ๋ ค ์ฌ๋ฌVM
์ ๋ง๋ค ์ ์์ - ์ด Guest OS๋ Host OS์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋์ OS๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์์
- ์ํ๋ Application์ ์ค์นํด ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ๋ง๋ค ์ ์์
# Container์ ๊ฒฝ์ฐ
Host OS
์ค์น๊น์ง ๋์ผํ๊ณ- ์ด OS์์
Container ๊ฐ์ํ
๋ฅผ ์์ผ์ฃผ๋ ์ฌ๋ฌ ๊ฐ์ง SW๋ค์ด ์์ - ํ์ฌ๋
Docker
๋ฅผ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ ์ถ์ธ - Docker๊ฐ Container๋ฅผ ๋ง๋ค์ด์ค!
# 2. Container๋?
- ์๋ฅผ ๋ค์ด ๋ฆฌ๋ ์ค๋ ๋ฒ์ ์ด ์๋๋ฐ ๋ฒ์ ์ ๋ฐ๋ผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค๋ฆ
- Linux 6๋ฒ์ ์ผ๋ก ๊ฐ๋ฐ์ ์งํํ ๊ฒฝ์ฐ Linux 6๋ฒ์ ์ ์ค์น๋์ด์๋ OpenJDK ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ฐ๋ฐํจ
- ๋ง์ฝ ๋ฆฌ๋ ์ค 7๋ฒ์ ์์ ์ฌ์ฉํ๋ฉด ๋ฒ์ ์ฐจ์ด์ ๋ฐ๋ฅธ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒ์
๊ทธ๋์ ์ฐ๋ฆฐ docker๋ฅผ ์ค์นํด Container ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๋ฉด ์ด ์ด๋ฏธ์ง์๋ ์๋น์ค์ ์๋น์ค์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ด ๋ฌถ์ด์ ๊ฐ์ง๊ณ ์์
Docker๋ง ์ค์น๋์ด์์ผ๋ฉด ๋ค๋ฅธ ๋ฒ์ ์ Linux์์๋ ์์ ์ ์ธ Container๋ก ์์คํ
์ ๊ตฌ๋์ํฌ ์ ์๋ค๋ ์๋ฏธ
# ๋์ปค์ ๋ค๋ฅธ ๊ธฐ๋ฅ
- ์ฌ๋ฌ Container๊ฐ์ ํธ์คํธ ์์์ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๊ฒ ํด์ค
- ์ด๊ฒ ๋ฆฌ๋
์ค ๊ณ ์ ๊ธฐ์ ์ธ
namespace
์cgroups
์ ์ฌ์ฉํด์ ๊ฒฉ๋ฆฌํ๋ ๊ธฐ์
namespace
๋ ์ปค๋์ ๊ด๋ จ๋ ์์ญ์ ๋ถ๋ฆฌcgroups
๋ ์์์ ๊ด๋ จ๋ ์์ญ์ ๋ถ๋ฆฌ
์ ๋ฆฌํ๋ฉด Docker
์ ๊ฐ์ Container ๊ฐ์ํ ์๋ฃจ์
์ OS์์ ์ ๊ณตํ๋ ์์ ๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ์ด์ฉํด Container
๋ผ๋ ๋จ์๋ก ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ ์ ์๊ฒ ๋ง๋ค์ด ์ค
์ด๋ฅผ ํตํด Container ๊ฐ์ํ
๊ฐ ์ค์น๋ OS์์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ํ ๊ฑฑ์ ์์ด ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋จ
# 3. ๋ณด์๊ณผ ํจ์จ์ฑ ์ธก๋ฉด
# ํจ์จ์ฑ ์ธก๋ฉด
VM ๊ฐ์ํ
- OS๋ฅผ ๋งค๋ฒ ๋์์ผ ํจContainer ๊ฐ์ํ
- ํ๋์ OS๋ฅผ ๊ณต์
Container๊ฐ ๋น ๋ฅผ ์ ๋ฐ์ ์์
๐ก ๋จ์ ์ ์์๊น?
VM์ ๋ด๊ฐ window๋ฅผ ์ฌ์ฉํ๋๋ผ๋์๋ก์ด Guest OS
๋ก Linux๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ Container๋ ๊ทธ๋ ๊ฒ ์ฌ์ฉํ ์ ์์
# ๋ณด์ ์ธก๋ฉด
VM ๊ฐ์ํ
- ๊ฒ์คํธ OS๊ฐ ๋ซ๋ ค๋ ๋ค๋ฅธ ๊ฒ์คํธ OS๋ ํธ์คํธOS์ ์๋ฒฝํ๊ฒ ๋ถ๋ฆฌ๋์ด ๊ฐ๊ฐ VM๋ผ๋ฆฌ ํผํด XContainer ๊ฐ์ํ
- ํ Container๊ฐ ๋ซ๋ ค OS์์ญ์ ์ ๊ทผํ๋ฉด ๋ค๋ฅธ Container๋ ์ํ์ ๋ ธ์ถํ์ง๋ง ์ด๋ฐ ์ ์ ๊ณ์ํด์ ๋ณด์ํ๋ ์ค์
# 4. ์์คํ ๊ฐ๋ฐ ์ธก๋ฉด
์ ์์๋ฅผ ํตํด ์ดํด๋ณด์.
# VM ๊ฐ์ํ
์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ํ ์๋น์ค
๋ฅผ ๋ง๋ค ๋ ํ๊ฐ์ง ์ธ์ด๋ฅผ ์ฌ์ฉํด ์ฌ๋ฌ ๋ชจ๋์ด ํ ์๋น์ค๋ก ๋์๊ฐ
๋ง์ฝ A์ B๋ชจ๋์ด ๊ด์ฐฎ์๋ฐ C๋ชจ๋์ ๋ถํ๊ฐ ๋ง์ด ๊ฐ๋ ์ํฉ์ด๋ฉด VM์ ํ๋ ๋ ์์ฑํด ๋์ฐ๊ฒ ๋จ
์์ ์ฌ์ฉ๊ณผ ์ฑ๋ฅ ์ ์ฅ์์ Guest OS๊ฐ 2๊ฐ๊ฐ ์ฌ๋ผ๊ฐ๊ฒ ๋จ
# A์ B๋ ํ์์์ง๋ง ํ ํจํค์ง๊ธฐ ๋๋ฌธ์ ๋ฐ๋ผ ์ฌ๋ผ๊ฐ๋ ๋นํจ์จ ๋ฐ์
# Container ๊ฐ์ํ
Container์ ๊ฒฝ์ฐ ํ ์๋น์ค๋ฅผ ๋ง๋ค ๋ ๋ชจ๋๋ณ๋ก ์ชผ๊ฐ์ ๊ฐ๊ฐ์ ์ปจํ
์ด๋์ ๋ด๋ ๊ฒ(๋ง์ดํฌ๋ก ์๋น์ค
)์ ๊ถํ๊ณ ์๊ณ ๊ฐ ๋ชจ๋์ ๋ง๋ ์ต์ ํ๋ ์ธ์ด๋ฅผ ์ฌ์ฉ
ํ๋ ๊ฒ์ ๊ถ์ฅ
์ฌ๊ธฐ์ ์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ๋ฌ ์ปจํ
์ด๋๋ค์ ํ๋์ Pod
๋ผ๋ ๊ฐ๋
์ผ๋ก ๋ฌถ์ ์ ์๊ณ ํ๋์ Container
๋ฅผ pod
๋ก ๋ฌถ์ ์ ์์ด์ ํ๋์ pod๋ ํ๋์ ๋ฐฐํฌ ๋จ์๊ฐ ๋จ
์ฟ ๋ฒ๋คํฐ์ค๋ ์ด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๋ง๋ค์ด ๋์ผ๋ฉด ๋ด๊ฐ ํ์ํ pod๋ง ํ์ฅ์ ํ ์ ์์