Docker ๊ฐ์
์ด๋ ์๊ฐ๋ถํฐ Docker๊ฐ ๋ง์น ์ ๊ณ ํ์ค์ด๋ ๊ฒ ์ฒ๋ผ… ๋ง์ ์๋น์ค์์ ์ฌ์ฉ๋๊ณ ์๋ ๊ธฐ์ ์ด ๋์์ต๋๋ค. ํนํ MSA(Micro Service Architecture) ๊ฐ ๋์ธ๋ก ๋ ์ค๋ฅด๋ฉด์ MSA์ ๋จ์ ์ธ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด ์๋น์ค์ ์ปจํ ์ด๋ํ๊ฐ ์ด๋ฃจ์ด์ง๊ณ , ์ด ๊ณผ์ ์์ Docker์ Kubernetes๊ฐ ๋ง์ด ๋์ ๋์์ต๋๋ค.
MSA(Micro Service Architecture)
โป MSA๋ ์๋น์ค๊ฐ์ ์์กด์ฑ์ ์์ ๊ณ ๊ธฐ๋ฅ์ ์ชผ๊ฐ๋ ๊ฒ์ ์ค์ ์ ์ผ๋ก ์ค๊ณํ ์ํคํ
์ฒ์
๋๋ค.
์๋ฅผ ๋ค์ด, ์ํ ์์คํ
์ ํ๋์ ํตํฉ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ฐ๋ฐํ์ง ์๊ณ … ์
/์ถ๊ธ ์๋น์ค, ์กฐํ ์๋น์ค, ๋์ถ ์๋น์ค ๋ฑ ๊ธฐ๋ฅ๋ณ๋ก ์๊ฒ ์ชผ๊ฐ์ MSA ํํ๋ก ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค. ์ด ๋ ์๋ก์ด ๋์ถ ์ ํ์ด ์๊ฒจ ๊ฐ๋ฐ์ด ํ์ํ๋ฉด, ์ํ ์์คํ
์ ์ฒด๋ฅผ ์์ ํ ํ์ ์์ด ๋์ถ ์๋น์ค์ ์์ ๋ง์ผ๋ก ์์
์ ๊ฒฝ๋ํ ํ ์ ์์ต๋๋ค.
์์ ์์์ฒ๋ผ MSA๋ ์๋์ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ ์ ์์ต๋๋ค.
- ์๋น์ค ๋จ์์ ๊ฐ๋ฐ ๊ฐ๋ฅ
- ์ง์์ ์ธ ํตํฉ๊ณผ ๋ฐฐํฌ(CI/CD)๋ฅผ ํจ์จ์ ์ผ๋ก ํ ์ ์์
- ํจ์น๊ฐ ํ์ํ ์๋น์ค๋ง ๋ฐฐํฌํ๊ฑฐ๋ Hotfix(์ ๊ธฐ ํจ์น ์ด์ธ ๊ธํ๊ฒ ์์ ์ด ํ์ํ ํจ์น)๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์
- ์ ์ฒด๊ฐ ์๋ ํ์ํ ์๋น์ค์๋ง ์ด์คํ๋ฅผ ํ ์ ์๋ค.
์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์์ ์๋น์ค๊ฐ ๊ฒฐํฉ๋(Coupling)๋ฅผ ์ค์ด๊ณ ์์ง๋(Cohesion)๋ฅผ ๋์ด๋ ํจ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
MSA์ ์ด๋ฐ ์ฅ์ ๋ค์ด ์๋ ๋ฐ๋ฉด์… ์๋น์ค๋ค์ ๊ด๋ฆฌํ๊ธฐ ๋ณต์กํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฐ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
Why Docker?
IaC(Infrastructure as Code)
์ฐ์ ์์ ๊ธ์ ๋ด์ฉ์์๋ ์์คํ ์ ์ ์ํ๊ฒ ๊ตฌ์ถํ๊ณ ๊ด๋ฆฌํ๋ ๊ด์ ์์ MSA์ ์ค์ ์ ์ธ ์ด์ ๋ฅผ ์์ฑํ๋๋ฐ… Docker๊ฐ ๊ผญ MSA๋ฅผ ์ํ ๊ธฐ์ ์ ์๋๋๋ค. ํ ์คํธ, ์คํ ์ด์ง, ๋ฐฐํฌ ๋ฑ ์ฌ๋ฌ ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋จ, ์ค์ํ๊ฒ ๋ด์ผํ ๊ด์ ์ Docker๋ฅผ ์ฌ์ฉํ๋ฉด IaC(Infrastructure as Code)๊ฐ ๊ฐ๋ฅ ํ๋ค๋ ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด์ ์์ผ๋ก ์ฌ๋ฌ ์ค์ต๋ค์ ์งํํ๋ฉด์ Docker๋ก ์ปจํ ์ด๋๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํด ๋ณด๋ฉด… ๊ทธ๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ ๊ฐ์ํ๋ ๊ณต๊ฐ? ๋ถ๋ฆฌ๋ ๊ณต๊ฐ? ํน์ ์ด์์ฒด์ ์์ ์ด์์ฒด์ ? ๊ทธ๋ฅ ์ด์ ๋๋ก ๋ณด์ผ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ Docker์ ์ง์ง ํฐ ํ์ ์ธํ๋ผ๋ฅผ ์ฝ๋ํํด์ ๊ด๋ฆฌํ ์ ์๋ค๋ ์ ์
๋๋ค. ์์ผ๋ก ํ์ธํด๋ณผ Dockerfile์ด๋ docker-compose๋ฅผ ๋ง์ ธ๋ณด๋ฉด ์ด์ ์๋ ์ง์ ์์คํ
์ ์ธํ
ํด์ค์ผ ํ๋ ๋ถ๋ถ๋ค์ ์ฝ๋๋ก ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
Docker์ Container, ๊ฐ์ํ
Docker๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ Container์ ๊ฐ์ํ์ ๋ํ ์ดํด๊ฐ ์ ํ๋์ด์ผํฉ๋๋ค. Docker์ด์ธ์๋ containerd, CRI-O ๋ฑ ์ปจํ ์ด๋ ๋ฐํ์์ด ๋ง์ด ์กด์ฌํฉ๋๋ค. ์ค์ ์๋ฅผ ๋ค์ด, Container๋ฅผ Orchestratingํ๋ ํ๋ซํผ์ธ Kubernetes์ ์ต์ ๋ฒ์ ์์๋ ๋ ์ด์ ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก Docker๋ฅผ ๋ ์ด์ ์ง์ํ์ง ์๋๋ค๊ณ ๊ณต๊ณ ํ์ต๋๋ค. ๊ทธ๋์ Container๋ฅผ ๋ค๋ฃจ๋ ๊ธฐ์ ์ ์์์ผํฉ๋๋ค.
ํด๋น ๊ธ์์๋ Container, ๊ฐ์ํ ์ Docker์ ๋ํด ๋ค๋ฃน๋๋ค.
Container๋?
Docker๋ฅผ ์ดํดํ๋๋ฐ ์์ด์ Container์ ๋ํ ์ดํด๊ฐ ํ์ ํฉ๋๋ค.
์ปจํ ์ด๋๋ Host OS ์์์ ๋ฆฌ์์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ถํ์ฌ ๋ง์น ๋ณ๋์ ์๋ฒ์ธ ๊ฒ ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ธฐ์ ์ ๋๋ค. ์ด๊ฒ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ถํ๋ค๋๊ฒ ์ค์ํ๋ฐ… ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ตฌ๋ถํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์์ ๊ณ ๋ค์ ์์ฑํ๊ณ ํ ์ ์๋ ๊ฒ ์ ๋๋ค. ์ด๋ฐ ๋ฉด์์ ๊ฐ๋ณ๋ค๊ณ ํํํ ์ ์์ต๋๋ค.
์์๊ฐ ์ ํํ์ง๋ ์์ง๋ง… ์ฝ๊ฒ ๋น์ ๋ฅผํด์ ์๊ฐํด๋ณด๋ฉด ๊ฑด๋ฌผ(๋ฌผ๋ฆฌ์ ๋ฆฌ์์ค)์์ ๋ฒฝ์ ์น๊ณ ๊ณต๊ฐ์ ๊ตฌ๋ถํด์ ์์์ , ์ ์ง, ๋ถ๋์ฐ, PC๋ฐฉ, ์ฌ์ฐ๋ ๋ฑ ์ฉ๋์ ๋ฐ๋ผ ์ ๊ธฐ์ธ, ์๋์ธ, ์๋ฆฌ์ธ(๋ ผ๋ฆฌ์ ๋ฆฌ์์ค)๋ฅผ ๊ฐ๊ฐ ์ฌ์ฉํ ๋งํผ ๋ด๊ณ ๊ฐ์ ์ด๋ฆ์ ์ง์์ ๊ณ ์ฉํด๋ ๊ตฌ๋ถํ๊ธฐ ์ฌ์ด ๊ฒ ์ฒ๋ผ ๊ฐ ์ปจํ ์ด๋๋ค์ ํ ๋น ๋ฐ์ ๋ฆฌ์์ค๋ฅผ ์ด์ฉํ๊ณ ๊ฐ์ ํฌํธ๋ฅผ ์ฌ์ฉํด๋ ๊ตฌ๋ถ์ด ๊ฐ๋ฅํฉ๋๋ค.(๊ฑด๋ฌผ์ ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ด๋ ต์ง๋ง… ๋ด๋ถ ๊ณต๊ฐ์ ์ธํ ๋ฆฌ์ด๋ฅผ ํตํด ๋ฐ๊พธ๋ ๊ฒ์ ์ฝ๋ค๋ ๊ฐ์ )
์ปจํ ์ด๋๋ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ๋ถ๋ค ๋๊ณ ์ฌ์ฉํ๋ค.
์ด๋ ๊ฒ ๊ตฌ๋ถํด์ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์๋์ ๊ฐ๋ค.
- ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฏธ๋ค์จ์ด์ ๋ฒ์ ์ ๋ํ ์ถฉ๋์ ํํผ
- ์ด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ์ข๋ค
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๊ทธ๋๋ก ์์กด์ฑ ์์ด ๋ค๋ฅธ ํ๊ฒฝ์์ ์คํ ๊ฐ๋ฅ
- ์ปจํ ์ด๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์คํํด์ ์ด์คํ ๊ฐ๋ฅ
- ๋ค์ํ ์ด์ ํ๊ฒฝ์ ์ง์ํ ์ ์๋ค
- Windows ํ๊ฒฝ์์ Linux๋ฅผ ์คํํ๊ฑฐ๋ ๊ทธ ๋ฐ๋๋ ๊ฐ๋ฅ
์ปจํ ์ด๋์ ๋ํด ์์๋ดค๋๋ฐ… ๊ธฐ์กด์ VMWare๋ Virtualbox๋ฅผ ์ด์ฉํด์ ๊ฐ์ํ๊ฒฝ์ ๋ง๋ค์ด ์ฌ์ฉํด๋ณธ ๊ฐ๋ฐ์๋ก์ ํ ๊ฐ์ง ์๋ฌธ์ด ์๊ธธ ์ ๋ฐ์ ์์ต๋๋ค.
"๊ฐ์ํ ๊ธฐ์ ๊ณผ๋ ์ด๋ค ์ฐจ์ด๊ฐ ์์๊น?"
๊ฐ์ํ ๊ธฐ์ ๊ณผ ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ฐจ์ด
Legacy
- ํ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
- ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฏธ๋ค์จ์ด ๋ฒ์ ์ ์ถฉ๋์ด ๋ฐ์ํ ์ ์์
Hosted Hypervisor(๊ฐ์ํ ์ํํธ์จ์ด)
- Virtual Box, VMWare, Parallels ์๊ฐ์ ์ํํธ์จ์ด
- ํธ์คํธ OS ์์ ๊ฐ์ํ ์ํํธ์จ์ด๋ฅผ ์ค์นํด์ ๊ฐ์ํ๊ฒฝ ๊ตฌ์ถ
- ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์์ด ํด๋ผ์ด์ธํธ PC์์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ๊ฑฐ๋ ํ ์คํธ๋ฅผ ์ํด ์ฃผ๋ก ์ฌ์ฉ
- ์ปจํ
์ด๋์๋ ๋ค๋ฅด๊ฒ Guest OS๊ฐ ์กด์ฌํ์ฌ ์ค๋ฒํค๋๊ฐ ๋น๊ต์ ํฌ๋ค.
- OS ์์ OS๋ฅผ ์คํํ๋ ๊ฒ์ด๋ฏ๋ก ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ)์ ํ ๋นํ๋๋ฐ ์์ ์ด ํ์
Bare Metal Hypervisor
- Hyper-v, XenServer, ESXI Server, ๋ฑ์ด ์๋ค.
- Host OS ์์ด ํ๋์จ์ด์ ์ง์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ค์น
- Host OS๊ฐ ์์ด ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ํ๋์จ์ด๊ฐ ์ ์ด
- ์ค๋ฒํค๋๊ฐ ๋น๊ต์ ์ ๋ค.
- ๊ฐ์ ๋จธ์ ๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฝ์์ด ํ์
Container
- Docker, containerd, CRI-O ๋ฑ์ด ์ปจํ ์ด๋ ๋ฐํ์์ผ๋ก ์์
- Guest OS๊ฐ ์๊ณ Host OS์ ์ปค๋์ ๊ณต์ ํ์ฌ ์ค๋ฒํค๋๊ฐ ์ ๊ณ ๊ฐ๋ฒผ์ ๋น ๋ฅด๋ค
- OS ์คํ ์์ด ๋ณ๋์ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๊ฐ๋ฅ
- ์ด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ๋๋ค.
๊ฐ์ํ ๊ธฐ์ ๊ณผ ์ปจํ ์ด๋ ๊ธฐ์ ์ ๋น์ทํ๋ฉด์๋ ๋ค๋ฅด๋ค. ์ด๋ ํ๋๊ฐ ๋ ์ข๋ค ๋์๋ค๋ผ๊ณ ์ ์ํ๊ธฐ๋ณด๋ค๋ ๊ฐ๊ฐ ๋ชฉ์ ์ ๋ง๊ฒ ๋ค๋ฅด๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค.
Docker๋?
Docker๋ ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ํ๊ฒฝ์ ์ ์ํ๊ฒ ๊ตฌ์ถํ๊ณ ํ ์คํธ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ซํผ ์ ๋๋ค.
๋ฌด๋ฃ๋ก ์ ๊ณตํด์ฃผ๋ CE(Community Edition)๊ณผ EE(Enterprise Edition)์ผ๋ก ๋๋๊ณ ์๋์ ๊ฐ์ ํ๋ซํผ๋ค์์ ์๋ ๊ฐ๋ฅํ๋ค.
- Linux
- Ubuntu
- CentOS
- Debian
- Cloud
- Azure
- AWS
- Windows10
- MacOS
- ETC
๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๋๋ถ๋ถ์ ํ๊ฒฝ์์ ๋ชจ๋ ๊ตฌ๋ ๊ฐ๋ฅํ๋ค.
โป Docker๊ฐ ์ปจํ ์ด๋ ๊ธฐ์ ์ ๋ง๋ ๊ฒ์ด๋ผ๊ณ ํท๊ฐ๋ คํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ด๋ฏธ ์กด์ฌํ๋ ๊ธฐ์ ์ด๊ณ Docker๋ ์ด ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.
Docker ์ด๋ฏธ์ง
์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ Base๊ฐ ๋๋ ๊ฒ์ด ์ด๋ฏธ์ง ์ ๋๋ค. ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ฝ๊ฐ ํด๋์ค์ ์ธ์คํด์ค์ ๊ฐ๋ ์ด๋, ๋ถ์ด๋นต ํ๊ณผ ๋ถ์ด๋นต์ผ๋ก ์๊ฐํ๋ฉด ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค.
๋จ์ํ ๊ฐ๋ฐํ๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ง ์ด๋ฏธ์งํํ๋ก ๋ง๋ค์ด์ ๋ฐฐํฌํ๋ ๊ฒ์ด ์๋๋ผ… Database๋ WEB/WAS ์ฒ๋ผ ๋ฏธ๋ค์จ์ด๋ก ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋จ๋ค ํน์ ๋ค๋ฅธ OS ํ๊ฒฝ์ ์คํํ๊ธฐ ์ํ ์ด๋ฏธ์ง๊ฐ Docker ์ด๋ฏธ์ง Repository(Ex. Docker Hub)์ ๋ฐฐํฌ๋์ด ์์ด ๋ฐ์์ ์ฌ์ฉํ๋ฉด ๋๋ค.
- Oracle ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ DB๋ก ํ์ฉ
- Java, Apache/Tomcat์ด ์ค์น๋์ด ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ ๊ทธ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฆฌ๊ณ ์ฌ๋ฐฐํฌ
- Windows OS์์ CentOS ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด CentOS ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ ์ฌ์ฉ
๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ์ ํ๋ฆ
Docker๊ฐ ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ์ํํธ์จ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋๋ฐ… ์์ง ์ ์ฌ์ฉํ๊ณ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ฅ์ ์ด ์๋์ง ๊ฐ์ด ์์ฌ ์ ์์ต๋๋ค. ๊ทธ๋์ ํ ๊ฐ์ง ์์๋ก, ์๋ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ์ ๋ํ ํ๋ฆ์ ๋น๊ตํด์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
Legacy
์ค์ ๋ก ์ด๋ ๊ฒ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ๊ณณ์ ์๊ฒ ์ง๋ง… ์ฝ๊ฒ ์ค๋ช ํ๊ธฐ ์ํด ์กฐ๊ธ ๊ทน๋จ์ ์ธ ์์๋ฅผ ๋ค์์ต๋๋ค. ์๋๋ Legacy ํ๊ฒฝ์์ ๊ฐ๋ฐ ๋ถํฐ ๋ฐฐํฌ์ ํ๋ฆ์ ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๊ฐ์ธ PC์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ณ Repository์ ๋ฐฐํฌํฉ๋๋ค.
- Repositorty์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ํ ์คํธํ๊ฒฝ์์ ํ ์คํธํฉ๋๋ค.
- Repository์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ฐ์ ์คํ
์ด์งํ๊ฒฝ์์ ์๋น์ค๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธํฉ๋๋ค.
- ์คํ ์ด์ง ํ๊ฒฝ์ ์คํ๊ฒฝ๊ณผ ๋๊ฐ์ง๋ง ๊ท๋ชจ๊ฐ ์์ ํ๊ฒฝ์ผ๋ก ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
- ์คํ๊ฒฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํฉ๋๋ค.
์์ ํ๋ฆ์ ๋ดค์ ๋… ๋ฐ์ํ ์ ์๋ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๊ฐ ํ๋ ๋ณด์ผ๊ฒ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ํ๊ฒฝ์์ ๊ฐ์ง๋ง… ๊ฐ ํ๊ฒฝ์ ์๋ฒ์ ์ด์์ฒด์ ๋ ๊ทธ์์ ์ฌ๋ผ๊ฐ ์๋ ๋ฏธ๋ค์จ์ด ํ๋ก๊ทธ๋จ๋ค์ ๋์ผํ์ง ์๋ค. ์์กด์ฑ ๋ฌธ์ ๋ ์ ํ ์์ฒด๊ฐ ๋ฌ๋ผ ์๊ธฐ๋ ๋ฌธ์ ๋ฑ, ๊ฐ๋ฐ์ ๊ฐ์ธ PC์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์๋ํ๋๋ฐ ํ ์คํธํ๊ฒฝ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ต๋ํ ํ๋ก๋์ ํ๊ฒฝ์ ๊ธฐ์ค์ผ๋ก ๋ค๋ฅธ ํ๊ฒฝ๋ ๋๊ฐ์ด ๋ง์ถ๋ ค๊ณ ๊ฐ์ํ๊ฒฝ์ ์ด์ฉํด์ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ฉด ์ด๋์ ๋ ์ปค๋ฒ๋ ๊ฐ๋ฅํ์ง๋ง… ์๋ฒฝํ๊ฒ ์์กด์ฑ์ ์ ๊ฑฐํ ์๋ ์๊ณ ์ฌ์ ํ ์๋์ ๊ฐ์ ๋ฌธ์ ๋ค์ด ์๋ค.
- ๋ฌด๊ฒ๋ค.
- ์ด์๊ณผ ํ์ฅ์ ๋ถ๋ฆฌํ๋ค.
- ๊ด๋ฆฌ๊ฐ ๋ณต์กํ๋ค. ๋ฑ
Containerized Applications(Docker)
Docker๋ฅผ ์ฌ์ฉํด์ ์๋น์ค๋ฅผ ์ด์ํ๋ค๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์ปจํ ์ด๋ํ(Containerizing)ํ๋ค๋ ๋ป์ ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ ๊ฐ์ธ PC์์ Docker ์ด๋ฏธ์ง๋ฅผ ๋น๋ํด์ Repository์ ๋ฐฐํฌํ๋ค.
- ํ
์คํธ, ์คํ
์ด์ง, ํ๋ก๋์
ํ๊ฒฝ์ Docker ํ๋ก๊ทธ๋จ๋ง ์ค์นํ๊ณ ๋ฐฐํฌ๋ ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฏธ์ง๋ฅผ ๋ฐ์ ์คํ ํ ํ
์คํธํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ฏธ๋ค์จ์ด๋ ์ปจํ ์ด๋๋ก ๋ฐ์์ ์ฌ์ฉํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ชจ๋ ์์๋ค์ ์ปจํ ์ด๋๋ก ๋ฐ๊ณ Docker-compose, Docker Swarm, Kubernetes ๋ฑ์ ์ด์ฉํด์ ๊ด๋ฆฌํ ์ ์๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ํ ํ์ ๋ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ์ ํ๋ฆ์ด ๋งค์ฐ ๊ฐ๋จํด์ ธ์ ๋น ๋ฅด๊ฒ ์งํ๋ ์ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์๋ฒ์ ์ด์์ฒด์ ๋ ๋ฏธ๋ค์จ์ด์ ์์กด์ฑ์ ๋ํด ๊ฑฑ์ ํ ํ์์์ด Docker๋ง ์ค์น๋์ด ์๋ค๋ฉด ๋ชจ๋ ๊ฒ์ด ํด๊ฒฐ๋ฉ๋๋ค.
๋๋ถ์ด ์ปจํ ์ด๋์ ๋ํ ๊ด๋ฆฌ๋ฅผ Dockerfile, docker-compose๋ ๋ ๋์๊ฐ kubernetes๋ฅผ ์ฌ์ฉํ๋ฉด ์ธํ๋ผ๊ฐ ์ฝ๋ํ๋์ด ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
์ด๋ ๊ฒ ํธํ๋ฐ Docker๊ฐ ์ธ๊ธฐ ์์ ์ด์ ๊ฐ ์๋ค.
Docker ์๋ ์๋ฆฌ
์ง๊ธ๊น์ง์ Docker์ ๋ํ ๋ด์ฉ์ ๋ดค์ ๋…
- ์์กด์ฑ์ ์ ๊ฑฐํ๊ณ ๋ ผ๋ฆฌ์ ์ธ ๊ณต๊ฐ์ผ๋ก ๋ถ๋ฆฌ๊ฐ ๋๋ค.
- ์ด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ์ข๋ค.
- ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ๊ฐ ๋น ๋ฅด๋ค. ์ ๊ฐ์ ์ฅ์ ๋ค์ ๋ณด์ฌ๋๋ ธ์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด๊ฒ ์ด๋ป๊ฒ ๊ฐ๋ฅํ ๊น์?
Docker๋ ๋ฆฌ๋ ์ค ์ปค๋์ ๊ธฐ์ ์ด ๊ธฐ๋ฐ๋๊ณ ์๋ค.
Container Namespace
Docker๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์ปจํ ์ด๋๋ณ๋ก ๋ ผ๋ฆฌ์ ์ธ ๊ณต๊ฐ์ ๊ฐ๊ฒ๋๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ Linux ์ปค๋์ namespace๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ฒ์ด๋ค. namespace๋ ๋ณ์์ ๊ฐ๋ ๊ณผ ๋น์ทํฉ๋๋ค. ๋ ผ๋ฆฌ์ ์ผ๋ก ์ด๋ฆ์ ๋ถ์ฌ ์ฐธ์กฐํ ์ ์๋๋กํ์ฌ ์ถฉ๋์ ํผํ๋ ๋ฐฉ์์ ๋๋ค. Linux๋ ์๋์ ์ค๋ธ์ ํธ์ namespace๋ฅผ ๋ถ์ผ ์ ์์ต๋๋ค.
- PID(Process ID)
- UID(User ID)
- Network
- mount(file system mount)
- UTS(hostname)
- IPC(ํ๋ก์ธ์ค๊ฐ์ ํต์ )
์ด๋ ๊ฒ namespace๋ฅผ ์ฌ์ฉํ๋ฉด Host OS๋ ๋ค๋ฅธ ์ปจํ ์ด๋์ ๊ฐ์ PID๋ฅผ ๊ฐ๋ ํ๋ก์ธ์ค๋ฅผ ๋์ฐ๊ฑฐ๋ ๊ฐ์ ํฌํธ์ ์๋น์ค๋ฅผ ๋์ฐ๋ ์์ ๋ค์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ผ Windows 10 ํ๊ฒฝ์์๋ ์ด๋จ๊น์?
Docker๋ namespace ์ฒ๋ผ ๋ฆฌ๋ ์ค ์ปค๋์ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋กํ๊ณ ์๋๋ฐ ์ด๋ป๊ฒ Windows์์ Docker๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒ ์ผ๊น์?
- Windows์์ Docker๋ Hyper-V๋ฅผ ์ด์ฉํ Linux VM์ Docker๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๊ฒฐ๊ตญ์ Linux์์ ์คํ๋๊ณ ์๋ ๊ฒ ์ ๋๋ค.
- Hyper-V๋ฅผ ์ฌ์ฉํ๋ฉด VMWare, Virtualbox์ ๊ฐ์ ๊ฐ์ํ ํด์ ์ฌ์ฉํ ์ ์๋ค.
๋ฆฌ์์ค ๊ด๋ฆฌ
Docker์์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ๋ ผ๋ฆฌ์ ์ธ namespace๋ฅผ ๊ฐ์ง๋ง… ๊ฒฐ๊ตญ Host OS์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฆฌ์์ค๋ ๊ณต์ ํด์ผํฉ๋๋ค.
๋ฆฌ๋ ์ค ์ปค๋์ cgroups๋ฅผ ํ์ฉํ๋ฉด ์๋ ๋ฆฌ์์ค๋ค์ ์ ์ดํ ์ ์๋ค.
- CPU
- Memory
- Network
- I/O
cgroups๋ ํ๋ก์ธ์ค์ ์ฐ๋ ๋๋ฅผ ๊ทธ๋ฃนํํด์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฐ ์ ์ด๋ ๊ผญ ํ์ํ ๋ถ๋ถ์ด๋ค. ์๋ฅผ ๋ค์ด ํน์ ์ปจํ ์ด๋๊ฐ ๋ชจ๋ ์์์ ์ฌ์ฉํด๋ฒ๋ ค ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋ฌธ์ ๋ฅผ ๋ฐ์์ํค๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ ํ์ ๋ ์ ์๋ค.
๋๊ธ