Docker
Docker
๐ What is Docker?
โบ What is a container and what problems does it solve?
ํ์ํ ๋ชจ๋ ์ข ์์ฑ ๋ฐ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํ๋ ๋ฐฉ๋ฒ
์ปจํ ์ด๋๋ ํธ์คํธ OS์์ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌํ(์ปจํ ์ด๋)์ ๋ง๋ค๊ณ , ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋์ํค๊ธฐ ์ํด ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ฑ์ ํ๋๋ก ๋ชจ์, ๋ง์น ๋ณ๋์ ์๋ฒ์ธ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ ๊ฒ์ด๋ค.
ํธ์คํธ OS์ ๋ฆฌ์์ค๋ฅผ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ์ํค๊ณ , ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๊ฐ ๊ณต์ ํ์ฌ ์ฌ์ฉํ๋ค.
์ปจํ ์ด๋๋ ์ค๋ฒํค๋๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ณ ๊ณ ์์ผ๋ก ์๋ํ๋ ๊ฒ์ด ํน์ง์ด๋ค.
โบ Virtualization and Linux Container
์ปจํ ์ด๋๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ์ผ๋จ ๊ฐ์ํ๋ผ๋ ๊ฐ๋ ์ ์๊ณ ์์ด์ผ ํ๋ค.
๊ฐ์ํ๋ ์ปดํจํฐ ๋ฆฌ์์ค์ ์ถ์ํ๋ฅผ ์ผ์ปซ๋ ๋ง์ธ๋ฐ, ์ ํ๋ฆฌ์ผ์ด์ , ์๋ฒ, ์ ์ฅ์ฅ์น ๋ฑ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋์ธ ๊ฒ์ ๋ณต์์ ๊ฒ์ฒ๋ผ ๋๋ ๋ฐ๋๋ก ๋ณต์์ ๊ฒ์ ํ๋์ธ ๊ฒ์ฒ๋ผ ๋ง๋ค์ด ์ฃผ๋ ๊ธฐ์ ์ด๋ค.
๊ฐ์ํ๋ฅผ ํตํด์ ๊ฐ์๋จธ์ (VM)์ ๋ง๋ค์ด ๋ผ ์ ์๋ค.
VM์ ํธ์คํธ ์ด์์ฒด์ ์์ ๊ตฌ๋๋๋ฉฐ ๊ทธ ๋ฐํ์ด ๋๋ ํ๋์จ์ด์ ๊ฐ์์ผ๋ก ์ก์ธ์คํ๋ Guest ์ด์์ฒด์ ๋ฅผ ๊ฐ์ง๋ ์ผ์ข ์ ๊ฒฉ๋ฆฌ๋ ๋จธ์ ์ด๋ค.
์ฝ๊ฒ ์๊ฐํ๋ฉด ํ๋์ ์ปดํจํฐ.
์ปจํ ์ด๋๋ ๊ฐ์๋จธ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋ชจ๋ ์ข ์ํญ๋ชฉ๊ณผ ํจํค์ง(๊ทธ๋ฅ APP์ ํ์ํ ๋ชจ๋ ํ์ผ, ์ค์นํ์ผ๋ค, ํ์ํ ๋ชจ๋ ๊ฒ๋ค)๋ก ๋ฌถ์ด ์ํํธ์จ์ด ์๋น์ค ๊ตฌ๋์ ์ํ ๊ฒฉ๋ฆฌํ๊ฒฝ์ ๋ง๋ จํด ์ฃผ์ง๋ง ํฐ ์ฐจ์ด์ ์ด ์๋ค.
๋ฐ๋ก ๊ฐ์ํ ๋ฐฉ์์ด ๋ค๋ฅด๋ค๋ ์ ์ด๋ค.
๊ธฐ์กด์ VM์ ์์ฑํ๋ ๊ฐ์ํ ๋ฐฉ์์ ์ฃผ๋ก OS๋ฅผ ๊ฐ์ํํ๋ค.
Host OS๊ฐ ์กด์ฌํ๊ณ ๊ทธ ์์ Guest OS ์ ์ฒด๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ์์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก OS๊ฐ ๊ฐ์๋จธ์ ์ด๋ฏธ์ง์ ํฌํจ๋์ด์ผ๋ง ํ๊ณ ์ด๋ ์ฉ๋์ด ๋งค์ฐ ํด ์๋ฐ์ ์๋ ๊ตฌ์กฐ์ด๋ค.
๊ฐ์ํ ๊ธฐ์ ์ ๋ฐ์ ์ผ๋ก ์ฑ๋ฅ์ด ์ข์์ก๋ค๊ณ ๋ ํ์ง๋ง, ์ ๊ฐ์ํ์ ๋ฐ๊ฐ์ํ ๋ฑ Guest OS๋ฅผ ํฌํจํ์ฌ ์ด์ํ๋ ๋ฐฉ์์ ์ฌ์ ํ ํ๋์จ์ด ์ฑ๋ฅ์ 100% ๋ฝ์๋ผ ์ ์๋ค.

ํ์ง๋ง ์ปจํ ์ด๋ ๊ธฐ์ ์ ๋ค๋ฅด๋ค.
์ปจํ ์ด๋๋ ๋ณ๋์ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ์์ด ๋ฆฌ๋ ์ค ์ปค๋์ ๊ณต์ ํ์ฌ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉฐ Guest OS๊ฐ ์กด์ฌํ์ง ์๋๋ค.
์ด๋ฐ ๊ฐ์ํ๋ฅผ '์ด์์ฒด์ ์์ค์ ๊ฐ์ํ'๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ด๊ฒ ๊ฐ๋ฅํ ๊น๋ญ์ ๋ฐ๋ก ๋ฆฌ๋
์ค ์ปจํ
์ด๋๋ฅผ ํตํด ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌ
ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
โบ ํ๋ก์ธ์ค ๊ฒฉ๋ฆฌ
๋ฆฌ๋ ์ค(Linux) ์ด์์ฒด์ ๋ ์ปค๋ ๊ณต๊ฐ๊ณผ ์ฌ์ฉ์ ๊ณต๊ฐ์ด ์กด์ฌํ๋ค.
์ด ์ค ์ฌ์ฉ์ ๊ณต๊ฐ์ ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ฆฌ์์ค๋ฅผ ์ ํํ ์ ์๋ค.
์ฆ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์์ ํ ๋น๋ฐ์ ์์์ ์ด์ฉํ์ฌ ๋์ํ๋๋ก ๋ง๋ค ์ ์๋ ๊ฒ์ด๋ค.
Docker๋ฅผ Linux์์ ์ฌ์ฉํ๋ ์ด์ ๋ Linux์(์ ํํ๊ฒ๋ ์ปค๋) ๋ค์ ๊ธฐ์ ๋ค์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
- Linux Namespace
๋ฆฌ๋ ์ค ๋ค์์คํ์ด์ค๋ ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ์ผ์์คํ , ๋คํธ์ํฌ, ์ ์ , ํธ์คํธ๋ค์ ๋ฑ์ ๋ํด์ ์์คํ ์ด ๋ ๋ฆฝ๋ทฐ๋ฅผ ๊ฐ์ง ์ ์๋๋ก ๋ง๋ค์ด์ค๋ค.

- Linux cgroup(Control group)

๋ฆฌ๋ ์ค ์ปจํธ๋กค ๊ทธ๋ฃน์ ํ๋ก์ธ์ค๊ฐ ์๋นํ ์ ์๋ ๋ฆฌ์์ค(CPU, ๋ฉ๋ชจ๋ฆฌ, I/O, ๋คํธ์ํฌ ๋์ญ)๋ฑ์ ์ ํํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก ๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ ์ ์๋ค.
๊ธฐ์กด ๊ฐ์ํ ๊ธฐ์ ์์๋ VM์ด ์ค์ ๋ฌผ๋ฆฌ ํ๋์จ์ด๋ฅผ ์๋ฎฌ๋ ์ดํธ ํ๋ฏ๋ก, OS๊ฐ ๋ฐ๋์ ํ์ํ๋ค.
ํ์ง๋ง ๋ฆฌ๋ ์ค ์ปจํ ์ด๋(LXC)์์๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ํธ์คํธ OS์์ ๋ฐ๋ก ์์ํ๋ค.
์ผ๋ฐ์ ์ธ ํ๋ก์ธ์ค์ ๋ค๋ฅธ ์ ์ ๊ทธ๋ฃนํ๋ฅผ ํตํด ๋จ์ ๋ ๊ณต๊ฐ์์ ๋์ํ๋ค๋ ๊ฒ์ด๋ค.
์ฆ, ์ปจํ
์ด๋๋ผ๋ ๊ฒ์ ๋ฆฌ๋
์ค๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ๋จ์ ๋ ๊ณต๊ฐ์์ ํ ๋น๋ฐ์ ์์คํ
์์์ ํตํด ๋
๋ฆฝ์ ์ผ๋ก ๊ฐ๋๋๋ ์ผ์ข
์ ํ๋ก์ธ์ค
์ด๋ค.

๋์ปค๋ ๊ฒฐ๊ตญ ์ปจํ ์ด๋ ์์ง์ ํ๋๋ค. ์์ ์ฌ์ง์ ๋ณด์ด๋ ์ปจํ ์ด๋ ๊ด๋ฆฌ ์ํํธ์จ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
Last updated