What are Containers? - accidentlywoo/legacyVue GitHub Wiki
What are Containers?
์ ํต์ ์ธ ๊ณผ๊ฑฐ์ ์๋ฒ ํ๊ฒฝ
์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋ -ใ ก -์์กด์ฑ(์กด์์ฑ) -ใ ก -์ปค๋ -ใ ก -ํ๋์จ์ด --> ๋ฐฐํฌ๊น์ง ์๊ฐ์ ๊ฑธ๋ฆผ, ๋ฎ์ ์์ ์ ์ ์จ(ํ์ฉ์จ), ์ด์์ฑ์ด ์์
์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฒ ์ด๋ฉํ(Bare - metal)์๋ฒ์์ ๊ตฌ๋๋์์. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ์ ์ ๊ณผ์ ์ด ํ์ํ์
- ํ๋์จ์ด์ ์ค์น
- OS๋๋ ์ปค๋(Kernel)์ค์น
- ๊ทธ๋ฆฌ๊ณค, ์ดํ๋ฆฌ์ผ์ด์ ๊ตฌ๋์ ์๊ตฌ๋๋ ์ ๋ง์ ์์กด์ฑ์ ๋ํ ์ค์น ๋ฐ ๊ดํ
- ๋ง์ง๋ง์ผ๋ก, ์ดํ๋ฆฌ์ผ์ด์ ์ ์ด ๋ชจ๋ ๊ฒ ์์ ์ค์นํ ์ ์์
๋ฌธ์ ์ : ์์ ๊ฐ์ ๊ธฐ๋๊ธด ์ผ๋ จ์ ์ ์ ์ด ์๋ฃ๋ ์ผํ์๋ ํ์ํ ์ง์์ ์ธ ์์กด์ฑ ์ ์ง/ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ ๊ฒ์ ๋ํ ์ฑํฌ๋ฅผ ๋ง์ถ๊ธฐ๊ฐ ์ด๋ ค์ - > ํด๊ฒฐ์ฑ ์ผ๋ก, VMware๊ฐ ํ์ดํผ๋ฐ์ด์ ๊ฐ๋ ์ ๋์
ํ์ดํผ๋ฐ์ด์ ์ ์ํ ์๋ฒ ํ๊ฒฝ
-ใ กใ กใ ก -๊ฐ์๋จธ์ -์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋ -ใ ก -์์กด์ฑ(์ข ์์ฑ) -ใ ก -์ปค๋ -ใ กใ กใ ก -ํ๋์จ์ด + ํ์ดํผ๋ฐ์ด์ --> ๋ฐฐํฌ๊น์ง -์์ผ(์๋ถ)์ด ๊ฑธ๋ฆผ, ํฅ์๋ ์์ ์ ์ ์จ(ํ์ฉ์จ), ์ฌ์ฉ ํ์ดํผ๋ฐ์ด์ ์์กด์ ์ด์์ฑ
VMware ์ง์์์, ํ๋์จ์ด๋ฅผ ํ์ดํผ๋ฐ์ด์ง ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๊ณ ์ํจ
- ํ๋์จ์ด๋ฅผ ์ปค๋, ์์กด์ฑ, ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก๋ถํฐ ๋ถ๋ฆฌ์ํจ๋ค๋ ์๋ฏธ
์ด๋ฅผ ์ํด์, "ํ๋์จ์ด ํ์ดํผ๋ฐ์ด์ "๋ผ๋ ๊ณ์ธต์ด ๊ฐ๋ฐ๋๊ณ , ํ๋์จ์ด ์๋จ์ ์์นํ ๋ชจ๋ ๊ณ์ธต๋ค์ ์์ ๋กญ๊ฒ ๋ง๋ค์ด ์ฃผ์์
- ์ฆ, ํ ๋จ๊ณ์ ์ถ์ ๊ณ์ธต์ด ๋์ ๋ ๊ฒ์
ํ์ดํผ๋ฐ์ด์ ์ ์ํ ์๋ฒ ํ๊ฒฝ์ ๋ฌธ์ ์ 1.
-๊ฐ์๋จธ์ -์ฑ์ฝ๋/์ฑ์ฝ๋ -ใ ก -์์กด์ฑ(์ข ์์ฑ) -ใ ก -์ปค๋ -ใ กใ กใ ก
- ํ๋์จ์ด + ํ์ดํผ๋ฐ์ด์ --> ๋ฐฐํฌ๊น์ง -์์ผ(์๋ถ) ๊ฑธ๋ฆผ, ์ฌ์ฉ ํ์ดํผ๋ฐ์ด์ ์์กด์ ์ด์์ฑ, ๋ฎ์ ๊ฒฉ๋ฆฌ์ฑ;OS์ ์์กด์ ์
ํ๋์ ๊ฐ์๋จธ์ฐ์ ์ฌ๋ฌ๊ฐ์ ์๋ก๋ค๋ฅธ ๋ฒ์ ์ผ๋ก ์ด์๋๋ ๋์ผํ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ค์น/๊ตฌ๋์ด ๋ถ๊ฐ๋ฅํจ ->์์กด์ฑ ์๋ฌ๊ฐ ์์ถํ๊ณ , ์ฌ๋ฌ๊ฐ์ง ์ถฉ๋ ์ํฉ์ด ๋ฐ์ํจ
์ด ๋ฌธ์ ์ ๋ํ์ฌ, ์ฌ๋ฌ๊ฐ์ ๊ฐ์๋จธ์ ์ ์์ฑํ๋ ๊ฒ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฝํ๋ ค๊ณ ํ์์
ํ์ดํผ๋ฐ์ด์ ์ ์ํ ์๋ฒ ํ๊ฒฝ์ ๋ฌธ์ ์ 2
-๊ฐ์๋จธ์ /๊ฐ์๋จธ์ -์ฑ์ฝ๋/์ฑ์ฝ๋ -ใ ก -์์กด์ฑ(์ข ์์ฑ)/์์กด์ฑ(์ข ์์ฑ) -ใ ก -์ปค๋/์ปค๋ -ใ กใ กใ กใ กใ กใ กใ ก
- ํ๋์จ์ด + ํ์ดํผ๋ฐ์ด์ --> 1. ๋ฐฐํฌ๊น์ง -์์ผ(์๋ถ) ๊ฑธ๋ฆผ, ์ฌ์ฉ ํ์ดํผ๋ฐ์ด์ ์์กด์ ์ด์์ฑ, ๋ฎ์ ๊ฒฉ๋ฆฌ์ฑ;OS์ ์์กด์ ์ --> 2. ๋ฐฐํฌ๊น์ง -์์ผ(์๋ถ) ๊ฑธ๋ฆผ, ์ฌ์ฉ ํ์ดํผ๋ฐ์ด์ ์์กด์ ์ด์์ฑ ๋ณต์ ๋ OS
๋ฌด์ํ ๋ง์ ๊ฐ์ ๋จธ์ ์ ์์ฑํ ํ, ๋์ผํ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ก ๋ค๋ฅธ ๋ฒ์ ๋๋ ๋จ์ํ ๋ณต์ ๋ ๋์ผ ๋ฒ์ ์ ์ค์น/๊ตฌ๋ ํ์์
์์กด์ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง ๋ชปํด์, ๋ถ๊ฐํผํ๊ฒ ์ ๋ง์ ๊ฐ์๋จธ์ ์ ๋ง๋ค์ด๋ผ ์ ๋ฐ์ ์์๋ค๋ ๊ฒ์ด ๋ฌธ์
- ๋น์ฉ์ด ๋ง์ด ๋ค๊ณ
- ๋ชจ๋ ๋ฉด์์ ๋น ํจ๊ณผ์ ์ด๊ณ
- ํ๋์จ์ด ์ธก๋ฉด์์ ๋ํ ๋น ํจ๊ณผ์ ์ -> ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ๊ฒ์ด Container์
์ปจํ ์ด๋์ ์ํ ์๋ฒ ํ๊ฒฝ
- ์ปจํ ์ด๋
- ์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋ -ใ ก
- ์์กด์ฑ(์ข ์์ฑ) -ใ กใ กใ ก
- ์ปค๋ + ์ปจํ ์ด๋ ๋ฐํ์ -ใ ก
- ํ๋์จ์ด --> ๋ฐฐํฌ๊น์ง -์๋ถ(์์ด) ๊ฑธ๋ฆผ, ์ด์์ฑ์ด ์ข์, ๋งค์ฐ ํจ์จ์ ์
์ปจํ ์ด๋ ๋จ์์ ๋ค๋ฅธ ์์ค์ ์ถ์ํ ๋ฐฉ์
- ํ๋์จ์ด ๊ณ์ธต๊ณผ์ ๋ถ๋ฆฌ
- (์ปค๋, ์ปจํ ์ด๋ ๋ฐํ์)๊ณ์ธต๊ณผ์ ๋ถ๋ฆฌ
์ฆ, ์ ๋ ๊ฐ์ง ๊ณ์ธต์ ์ด๋ค ์ข ๋ฅ๋ ์ง๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ดํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์์กด์ฑ์ผ๋ก ๋ถํฐ ๋ถ๋ฆฌํ ๊ฒ
๋งค์ฐ ์ด์์ฑ์ด ์ข๊ณ , ๋งค์ฐ ํจ์จ์ ์ธ ์ฅ์ ์ ๊ฐ์ง
์ปจํ ์ด๋์ ์ํ ์๋ฒ ํ๊ฒฝ - ๊ฐ๋ฐ์๋ค์๊ฒ ์ธ๊ธฐ ์๋ ์ด์
์ดํ๋ฆฌ์ผ์ด์ ์ ์ด๋์์๋ , ๋์ผํ๊ฒ ๋์ํจ
- ๊ฐ๋ฐ, ํ ์คํธ, ํ๋ก๋์ ์ด๋ค ํ๊ฒฝ์์๋
- ๋ฒ ์ด๋ฉํ, ๊ฐ์ด๋จธ์ , ํด๋ผ์ฐ๋ ์ด๋ค ํ๊ฒฝ์์๋
ํจํค์งํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ ์ธ์ดํด์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ์ํด
- ์ ์์ผํ ์์ฑ๊ณผ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅ
- ์ง์์ ์ธ ํตํฉ/๋ฐฐํฌ๊ฐ ๊ฐ๋ฅ
- ๋จ์ผ ํ์ผ์ ๋ณต์ฌ๋ง์ผ๋ก ์ด๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด์ค.
๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ฅํ๊ฒ ํด ์ฃผ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ ๊ณต
- ๋ถ์ ๊ฐ๋ฅ์ฑ(introspectable)
- ๊ฒฉ๋ฆฌ์ฑ(isolated), ํ๋ ฅ์ฑ(Elastic)
12๋ ์ ๊ฑธ์น ์ปจํ ์ด๋์ ์ญ์ฌ
- ํ์ดํผ๋ฐ์ด์ ์๋ฒ ํ๊ฒฝ : ์ ํ๋ ๊ฒฉ๋ฆฌ (2004)
- CGroups : ๊ตฌ๊ธ์ด ๋ง๋ Consistency Groups ๊ธฐ์ ์ ์์ (2006)
- LMCTFY Docker : ๋์ปค์ ์์ (2013)
- Kubernetes : ์ฟ ๋ฒ๋คํฐ์ค์ ์์ (2014)
๋์ปค ์ค๋ฒ๋ทฐ
Dockerfile(๋์ปคํ์ผ): ๋์ปค ์ด๋ฏธ์ง ์์ฑ์ ํ์
FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py
ํ ์ปคํ์ผ์ ํ ์คํธ ๊ธฐ๋ฐ ๋ฌธ์๋ก, ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๋น๋ํ๊ธฐ ์ํ ๋ช ๋ น๋ค์ ๊ธฐ์ ํจ R/W -> Read Write[Thin R/W layer] - ์ค์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ์ปจํ ์ด๋ ๊ณ์ธต ๊ธฐ๋ฐ ์ด๋ฏธ์ง ๊ณ์ธต (R/O) R/O -> Read Only
๋์ปค ์ค๋ฒ๋ทฐ 2
๋์ปค ์ปจํ ์ด๋์ ์ด๋ฏธ์ง์ ๊ด๊ณ
- ์ด๋ฏธ์ง : ์ผ์ข ์ ์คํ๊ฐ๋ฅํ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ํ ํ๋ฆฟ
- ์ปจํ ์ด๋ : ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ ์ค์ ์คํ๊ฐ๋ฅํ ์ด๋ฏธ์ง ์ธ์คํด์ค
ubuntu๋ผ๋ ์์ฑ๋ ์ด๋ฏธ์ง๋ ๊ฑด๋๋ฆด ์ ์๋ Read Only ๊ณ์ธต์. ์ธ์คํด์ค๋ฅผ ์ฐ์ด๋ด๊ธฐ ์ํ ํ ํ๋ฆฟ์ด๋ผ๊ณ ์๊ฐํด ๋ณด๋ฉด ๋น์ฐํ ๋ด์ฉ.
์ด๋ฏธ์ง๋ผ๋ ํ ํ๋ฆฟ์ผ๋ก ๋ถํฐ ์ฌ๋ฌ๊ฐ์ ๋์ผํ ์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ธ์คํด์ค๋ฅผ ์ฐ์ด๋ผ ์ ์์. -> ์ธ์คํด์ค๊ฐ ๋์์ง ๋๋ฌธ์, Read Write๊ฐ๋ฅํ ๊ณ์ธต์.