๊ตญ๋ฏผ๋ํ๊ต์์ "ํด๋ผ์ฐ๋ ์ปดํจํ " ๊ต๊ณผ๋ชฉ์ ์งํํ์๋
์ด๊ฒฝ์ฉ ๊ต์๋์ ๊ฐ์ ๊ต์์ ์ด์ฉํ์ฌ ์์ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค
์์คํ ๊ฐ์ํ ๊ธฐ์
Virtual Machine
- Hypervisor (Virtual Machine Monitor)๋ฅผ ํตํ ์ฌ๋ฌ ์ด์์ฒด์ ๊ฐ ๋
๋ฆฝ์ ํ๊ฒฝ ์ ๊ณต
- ๊ฐ VM์ ๋
๋ฆฝ์ ์ธ ๋ณ๋์ ์ปค๋(์ด์์ฒด์ ), ์์คํ
ํ๋ก์ธ์ค ๋ฑ์ ๊ด๋ฆฌํ๊ฒ๋จ
=> ์ถ๊ฐ ์ค๋ฒํค๋๊ฐ ํด ์ ์์ - ๊ฐ๊ฐ์ VM์ ๋ณ๋์ ์ปค๋์ ๊ฐ์ง ์ ์๊ธฐ์, ์๋ก ๋ค๋ฅธ ์ด์์ฒด์ ์ ๋์ ๋์ ๊ฐ๋ฅ
- VMM์ ํตํ ์์ ๊ณต์ ๋ก ์ธํด VM ๊ฐ ๊ฐ์ญ์ ๋ํ์ง๋ง ์ค๋ฒํค๋๊ฐ ์์ด monolithic ๊ตฌ์กฐ์ ์ ํฉ
Container Technologies
Container
- ํธ์คํธ ์ด์์ฒด์ ๋ด์์ ๋์ํ๋ฉฐ ์ปค๋ ๋ฐ ๋ง์ ์์คํ
์์์ ํธ์คํธ ๊ธฐ๊ธฐ์ ๊ณต์
- ๊ทน๋จ์ ์ผ๋ก ๋ณผ ๋ ํธ์คํธ ์ด์์ฒด์ ์์ ๋์ํ๋ ํ๋์ ํ๋ก์ธ์ค๋ก ๊ฐ์ฃผํ ์ ์์
- chroot๋ฅผ ํตํ ๋
๋ฆฝ๋ ํ์ผ ์๋น์ค ์ ๊ณต, cgroup์ ํตํ ์์ ๊ฐ์ญ, namespace ๊ธฐ๋ฅ์ ํ์ฉํ ๋
๋ฆฝ๋ ํ๋ก์ธ์ค ๊ณต๊ฐ ์ ๊ณต
=> namespace ๊ธฐ๋ฅ์ผ๋ก ๋ค๋ฅธ ์ปจํ ์ด๋๋ ์๋ณด์ด๊ฒ ํจ
(host os์์๋ kernel ๊ณต์ ํ๋ฏ๋ก ๋ค ๋ณด์ด๊ธดํจ) - ๋ณ๋ VMM์์ด ํธ์คํธ์ ์ปค๋์ ๊ณต์ ํ๊ธฐ์ ์ปจํ
์ด๋๊ฐ ๊ฐ์ญ์ด ํด ์ ์์ผ๋, ์์คํ
์ค๋ฒํค๋๊ฐ ์๊ธฐ์ microservice ๊ตฌ์กฐ์ ์ ํฉ
chroot๋ Change Root ์ฆ, ํ๋ก์ธ์ค์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฆฌ๋ ์ค ๊ธฐ๋ฅ์ผ๋ก
ํน์ ํ๋ก์ธ์ค๊ฐ ํ์ผ ์์คํ ์ ์ฐธ์กฐํ ๋, ์ง์ ๋ ์๋ก์ด ๋๋ ํ ๋ฆฌ๋ฅผ ์ต์์ ๋ฃจํธ(/)๋ก ์ธ์ํ๋๋ก ๋ง๋ฌ
=> Root ๊ถํ์ด ์๋ ๊ฒฝ์ฐ chroot๋ฅผ ํ์ถํ ๊ฐ๋ฅ์ฑ์ด ์์
cgroup์ ๋ฆฌ๋ ์ค์์ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์คํ ๋ฆฌ์์ค๋ฅผ ์ ํํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ผ๋ก
ํ๋ก์ธ์ค๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O, ๋คํธ์ํฌ ๋์ญํญ ๊ฐ์ ์์์ ์ ์ดํ ์ ์์
=> ์ปจํ ์ด๋ ํ๊ฒฝ์์ ๋ฆฌ์์ค ์ ์ด
(/sys/fs/cgroup ๋๋ ํ ๋ฆฌ์ ๋ง์ดํธ๋๋ฉฐ CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ ๊ฐ๊ฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์ค์ )
namespace๋ ๋ฆฌ๋ ์ค์์ ํ๋ก์ธ์ค ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๊ธฐ์ ๋ก
ํ๋ก์ธ์ค๊ฐ ์๋ก ๋ค๋ฅธ ๋ค์์คํ์ด์ค ์์ ์์ผ๋ฉด ๋ง์น ๋ ๋ฆฝ๋ ์์คํ ์ฒ๋ผ ๋์ํ๋ฉฐ, ๋ค๋ฅธ ๋ค์์คํ์ด์ค์ ๋ฆฌ์์ค๋ ์ ๊ทผํ ์ ์์
=> ์ปจํ ์ด๋ ํ๊ฒฝ์์ ๊ฐ ์ปจํ ์ด๋๋ฅผ ๋ ๋ฆฝ๋ ์์คํ ์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ค์ด์ค
์ปจํ ์ด๋ ๊ธฐ์ ์ ๋์คํ - Docker
์ปจํ ์ด๋ ๊ธฐ์
- ๊ธฐ์ ์ ์ธ๋ถ ๊ตฌ์ฑ ์์๋ค์ ๊ณผ๊ฑฐ์ ์ด๋ฏธ ๊ฐ๋ฐ๋์ด ์์์
- ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์์ฝ๊ฒ ์ฌ์ฉํ๊ธฐ์๋ ์ด๋ ค์์ด ์์์
(LXC = Linux Container)
Docker
- ๋ฆฌ๋
์ค ์ปจํ
์ด๋ ๊ธฐ์ ์ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ฐ๊ธฐ ์ฝ๋๋ก ์ด๋ฏธ์ง ์์ฑ, ๋ฐฐํฌ, ์์ฉ ํ๋ก๊ทธ๋จ ์คํ์ด ๊ฐ๋ฅํ ์๋น์ค ๊ฐ๋ฐ
Docker ๊ตฌ์กฐ
- Image : ์คํ์ ํ์ํ ํ์ผ ์์คํ
, ๋ฐ์ดํฐ, ํ๋ก๊ทธ๋จ๋ฑ์ ํฌํจ
- Registry : ์ฌ๋ฌ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ๋ ๊ณต๊ฐ์ผ๋ก, ์ฌ์ฉ์๋ ํ์์ ๋ฐ๋ผ ๊ณต๊ฐ ์ฌ๋ถ ๊ฒฐ์ ๊ฐ๋ฅ
- Container : ์ด๋ฏธ์ง๋ก๋ถํฐ ์์ฑ๋ ๋ณ๋์ ์คํ ๊ณต๊ฐ
์ถ๊ฐ ํ์ต ๋ด์ฉ
namespace์ ์ฌ์ฉ ์ฌ๋ก์ ์ปจํ ์ด๋ ํ๊ฒฝ๋ง๊ณ ๋ ๋ฉํฐํ ๋์๋ผ๋๊ฒ ์๋๋ฐ?
=> ๋ฉํฐ ํ
๋์๋ ํ๋์ ์ํํธ์จ์ด ์ธํ๋ผ๋ ํ๋ซํผ์ ์ฌ๋ฌ ์ฌ์ฉ์(ํ
๋ํธ)๊ฐ ๊ณต์ ํ๋ ํ๊ฒฝ์
ํน์ง์ผ๋ก๋
- ๊ณต์ ๋ ๋ฆฌ์์ค : ํ๋์ ๋ฌผ๋ฆฌ์ /๊ฐ์ ํ๊ฒฝ (์๋ฒ, ์ดํ๋ฆฌ์ผ์ด์
, DB) ๋ฑ์ ์ฌ๋ฌ ํ
๋ํธ๊ฐ ๊ณต์
- ๋ฐ์ดํฐ ๊ฒฉ๋ฆฌ : ๊ฐ ํ
๋ํธ์ ๋ฐ์ดํฐ์ ์ค์ ์ ์๋ก ๊ฒฉ๋ฆฌ๋์ด ๋
๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋จ
- ํจ์จ์ฑ : ๋ฆฌ์์ค๋ฅผ ์ต๋ํ ํ์ฉํ์ฌ ๋น์ฉ ์ ๊ฐ
- ์ฌ์ฉ์ ๊ฒฝํ : ๊ฐ ํ
๋ํธ๋ ์์ ๋ง์ ์ดํ๋ฆฌ์ผ์ด์
์ฒ๋ผ ๋๋ผ์ง๋ง, ์ค์ ๋ก๋ ๋์ผํ ์ธํ๋ผ๋ฅผ ๊ณต์ ํจ
์๋ฅผ ๋ค๋ฉด AWS, Azure, GCP์ ํด๋ผ์ฐ๋ ์ธ์คํด์ค์์ ์ฌ๋ฌ ๊ณ ๊ฐ์ด ๊ฐ์ ๋ฌผ๋ฆฌ์ ์๋ฒ๋ฅผ ๊ณต์ ํ๋ ๋ฐ์ดํฐ์ ํ๊ฒฝ์ ์์ ํ ๊ฒฉ๋ฆฌ๋๋ ๊ฒ๊ณผ
Slack๋ฑ์ SaaS ์ดํ๋ฆฌ์ผ์ด์
์ฒ๋ผ ๋์ผํ ์ดํ๋ฆฌ์ผ์ด์
์ฝ๋๋ฅผ ์ฌ์ฉํ์ง๋ง ์ฌ์ฉ์๋ณ ๊ณ์ ๋ฐ์ดํฐ๋ ๋ถ๋ฆฌ๋๋ ๊ฒ์ ์๊ฐํ๋ฉด๋จ
namespace๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ chroot์ cgroup์ผ๋ก ๊ฒฉ๋ฆฌ๊ฐ ์ ๊ณต๋๋๊ฑฐ ์๋๊ฐ?
=> chroot๋ ํ์ผ ์์คํ
๋ง ๊ฒฉ๋ฆฌํจ
์ฆ, ํ ํ๋ก์ธ์ค๊ฐ chroot ํ๊ฒฝ์ ์๋ค ํ๋๋ผ๋ ๋คํธ์ํฌ ์์(IP ์ฃผ์, ํฌํธ ๋ฑ)์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๊ณต์ ๋๊ณ ๋์ผํ PID ๋ค์์คํ์ด์ค๋ฅผ ์ฌ์ฉ, IPC(ํ๋ก์ธ์ค ๊ฐ ํต์ ) ๊ฐ์ ๋ค๋ฅธ ๋ฆฌ์์ค๋ ๊ฒฉ๋ฆฌ๋์ง ์์
๋, Root ๊ถํ์ ๊ฐ์ง ๊ฒฝ์ฐ chroot๋ฅผ ํ์ถํ ์ ์์ด chroot๋ฅผ ๋ณ๊ฒฝํ๋ ์๋ก์ด ์์คํ
์ฝ์ ํธ์ถํ ์ ์์
=> namespace๋ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ๋ชจ๋ ์์คํ ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํจ
์ฆ, ๋คํธ์ํฌ, PID, IPC, ํ์ผ ์์คํ
, ์ฌ์ฉ์ ID ๋ฑ ๊ฐ๊ฐ์ ๋
๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅํ๊ณ ํ ๋ค์์คํ์ด์ค์ ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ๋ค์์คํ์ด์ค๋ฅผ ๋ณผ ์ ์์
(์ปจํ
์ด๋ ๊ธฐ์ ์์๋ namespace๋ฅผ ์ฌ์ฉํด ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๊ตฌํํจ)
chroot๋ง์ผ๋ก๋ ๊ฒฉ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ด์ ๋ฅผ ์ดํด๋ณด๋ฉด
๋ ๊ฐ์ chroot ํ๊ฒฝ์ ์ค์ ํ๋ค๊ณ ํ์ ๋, ๋ ํ๊ฒฝ์ด ๋์ผํ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด, ํฌํธ ์ถฉ๋์ด ๋ฐ์ํ๊ฑฐ๋ ๋คํธ์ํฌ ํธ๋ํฝ์ด ๊ณต์ ๋จ
๋, ์๋ก ๋ค๋ฅธ chroot ํ๊ฒฝ์์๋, ps ๋ช ๋ น์ด๋ฅผ ํตํด ์๋ก์ ํ๋ก์ธ์ค๋ฅผ ํ์ธํ ์ ์๊ณ ํ์ชฝ์์ Root ๊ถํ์ ์ป์ผ๋ฉด ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ๋ซ๊ณ ๋๊ฐ ๊ฐ๋ฅ์ฑ์ด ์์
๋ฐ๋๋ก namespace ๋ง์ผ๋ก๋ ๊ฒฉ๋ฆฌ๊ฐ ๋ถ์กฑํ๊ฐ์ ๋ํด ์๊ฐํด๋ณด๋ฉด
Namespace ์์ฒด๋ ํ์ผ ์์คํ ๋ฃจํธ๋ฅผ ์ ํํ์ง ์๊ธฐ์ ํน์ ๋ค์์คํ์ด์ค ์์์๋ ์ ์ฒด ํ์ผ ์์คํ ์ ์ ๊ทผํ ์ ์์
=> chroot ํ์ฉ
Namespace๋ ๊ฒฉ๋ฆฌ๋ง ์ ๊ณตํ ๋ฟ, ๋ฆฌ์์ค ์ฌ์ฉ๋์ ์ ์ดํ์ง ์์
=> CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ์ฌ์ฉ๋ ๋ฑ์ ์ ํํ๋ ค๋ฉด cgroup ํ์ฉ
๊ทธ๋์ namespace์ chroot, cgroup์ ๋ชจ๋ ์กฐํฉํ์ฌ ์ปจํ ์ด๋ ๊ธฐ์ ์ ๊ตฌํํจ
'๐ Infra > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Docker๋? - ์ปจํ ์ด๋, ๊ฐ์ํ, Docker (0) | 2024.08.06 |
---|