Docker
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ๊ฐ์ํ ๋๊ตฌ์ด๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋๋ผ๋ ๋จ์๋ก ๊ฒฉ๋ฆฌํ๊ณ ์คํํ๊ณ ๋ฐฐํฌํ๋ ๊ธฐ์ ์ ๋งํ๋ค. ๊ทธ๋ผ ์ฌ๊ธฐ์ ๋งํ๋ ์ปจํ ์ด๋๋ ๋ฌด์์ผ๊น?
Container
์ปจํ ์ด๋๋ ๊ฐ์ํ ๊ธฐ์ ์ค ํ๊ฐ์ง์ด๋ค. ํธ์คํธ๋ ์ด์์ฒด์ ์์ ์ฌ๋ฌ๊ฐ์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์ ์์ฑํ๊ณ ๊ฐ๊ฐ์ ์ปจํ ์ด๋ ์์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ค. ๊ธฐ์กด์ ํ์ดํผ๋ฐ์ด์ ๊ธฐ๋ฐ์ ๊ฐ์ํ ๊ธฐ์ ์ ๊ฐ์๋จธ์ (vm)์ ์์ฑํ๊ณ ๊ตฌ๋ํ๋๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ์ผ์ชฝ๊ทธ๋ฆผ์ ๋ณด๋ฉด hypervisor ์์ ๋๋ค๋ฅธ OS๋ฅผ ํ ๋นํ๊ณ , ๊ทธ OS์์์ ๋์ํ๊ฒ ๋๋ค. Hypervisor ์์์ ๋์ํ๊ณ ์๋ VM๋ค์ ๊ฐ๊ฐ์ ์ปดํจํฐ๋ก ์๊ฐํ๋ฉด ๋๋ค. ์ฆ, OS์ค์น๋ถํฐ ์์ํด์ผ ๋๋ค๋ ์๋ฏธ์ด๋ค. ํ์ง๋ง ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด OS๋ฅผ ํ ๋นํ ํ์๊ฐ ์์ด์ง๊ณ , ํ๋ก์ธ์ค ๋จ์๋ก ๊ฒฉ๋ฆฌ ํ๊ฒฝ์ด ์ธํ ๋๋ค.
์๊ทธ๋ผ ๋ค์ํ๋ฒ ๋์ปค์ ๋ํด์ ์์๋ณด์.
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ๊ฐ์ํ ๋๊ตฌ๋ผ๊ณ ํ์๋ค. ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ๊ธฐ์ ์ธ LXC(Linux Container)๋ฅผ ๊ธฐ๋ฐ๊ธฐ์ ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋ ๋จ์๋ก ๊ฒฉ๋ฆฌํ์ฌ ์คํํ๊ณ ๋ฐฐํฌํ๋ค. ๋ค์ํ ์ด์์ฒด์ ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฝ๊ฒ ๋น๋, ๋ฐฐํฌ, ๊ด๋ฆฌํ ์์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ ํจ์จ์ ์ผ๋ก ๋ฒ ํฌ, ๊ด๋ฆฌํ ์์๋ค.
Docker Architecture
๋์ปค๋ server - client ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ค. ๋์ปค์ ์ ์ฒด์ ์ธ flow๋ ์ฌ์ฉ์๊ฐ ์คํํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ(client)ํ๋ฉด daemon์ ์ ๋ฌ์ด ๋๊ณ , daemon์ images์ ํด๋นํ๋ ์ด๋ฏธ์ง๊ฐ ์๋์ง ํ์ธํ์ฌ ์์ผ๋ฉด ์คํํ๊ณ , ์์ผ๋ฉด registry์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ์คํํ๋ค.
๋์ปค ๋ฐ๋ชฌ(Docker daemon)
- ๋์ปค ์์ง์ ํต์ฌ ๊ตฌ์ฑ ์์์ด๋ค.
- ๋์ปค ํธ์คํธ์์ ์ปจํ ์ด๋๋ฅผ ๊ด๋ฆฌํ๊ณ ์คํํ๋ ์ญํ ์ ๋ด๋นํ๋ค.
- ๋์ปค ์ปจํ ์ด๋๋ฅผ ์์ฑ, ์์, ์ค์ง, ์ญ์ ํ๋ ๋ฑ์ ์์ ์ ์ํํ๋ค.
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ธ๋ถ์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ ๋น๋ํ๋ ์์ ์ ์ํํ๋ค.
๋์ปค ํด๋ผ์ด์ธํธ(Docker Client)
๋์ปค ํด๋ผ์ด์ธํธ๋ ๋์ปค์ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ค. ๋์ปค ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด Docker daemon์ผ๋ก ๋ณด๋ด์ด ์คํํ๋ค. ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๊ฒ ๋๋ฉด, docker API๋ฅผ ํตํด ์ ๋ฌ์ ํ๊ณ , ํ๊ฐ์ ํด๋ผ์ด์ธํธ๋ ๋๊ฐ ์ด์์ ๋์ปค์ Daemonํต์ ์ด ๊ฐ๋ฅํ๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ(Docker Registry)
๋์ปค ๋ ์ง์คํธ๋ฆฌ๋ ๋์ปค์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ค. ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๊ณ , ๊ณต์ฉ ๋ ์ง์คํธ๋ฆฌ์ธ Docker hub ๋ ์๋ค.
Docker Object
๋์ปค ์ด๋ฏธ์ง(Docker Image)
- ๋์ปค ์ด๋ฏธ์ง๋ ๋์ปค ์ปจํ ์ด๋๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฝ๊ธฐ ์ ์ฉ ํ ํ๋ฆฟ์ด๋ค.
- ๋ณธ์ธ์ด ๋ง๋ค๊ฑฐ๋ ๋ค๋ฅธ์ฌ๋์ด ๋ ์ง์คํธ๋ฆฌ์ ์ฌ๋ ค๋์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์ด๋ฏธ์ง๋ ๊ณ์ธต, ๋ ์ด์ด๋ก ์ด๋ฃจ์ด์ ธ ์ต์ข ์ ์ผ๋ก ๋จ์ผ ์ด๋ฏธ์ง๋ก ๊ฒฐํฉ๋๋ค.
- ๋ณ๊ฒฝ์ด ์ผ์ด๋๋ ๊ฒฝ์ฐ ๋ณ๊ฒฝ๋๋ ๋ถ๋ถ์ ๋ ์ด์ด๋ง ์๋ก ๋น๋ํ์ฌ ์ ์ฉ๋์ด, ์๋๊ฐ ๋น ๋ฅด๋ค.
- ์ ์ฅ์์์ ์ด๋ฏธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์๋๋ ๊ธฐ์กด์ ์ด๋ฏธ์ง์ ์ฐจ์ด๊ฐ ์๋ ๋ถ๋ถ์ ๊ทธ๋๋ก ๋๊ณ , ๋ณ๊ฒฝ์ฌํญ๋ง ์ฃผ๊ณ ๋ฐ๋๋ค.
๋์ปค ์ปจํ ์ด๋(Docker Container)
- ์ปจํ ์ด๋๋ ๋์ปค์ด๋ฏธ์ง๋ฅผ ์คํํ๋ ๊ฐ์ฒด ๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ์ด๋ค.
- ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ํ ์คํธ๋ฅผ ์งํํ๋ ๋จ์์ด๋ค.
- ์ปจํ ์ด๋๋ ์คํ์ ํ์ํ ๋ชจ๋ ๊ตฌ์ฑ์์๋ฅผ ๋ด๊ณ ์์ด, ํธ์คํธ์ OS์ ์์กดํ์ง ์๋๋ค.
- ํธ์คํธ OS์, ๋ค๋ฅธ ์ปจํ ์ด๋๋ค๊ณผ ๋ถ๋ฆฌ๋ ์ํ์ด๋ค.
- ์ปจํ ์ด๋๋ ์ฝ๊ฒ ๊ณต์ ํ ์์๊ณ , ์ด๋ก ์ธํด ๋ชจ๋ ์ฌ๋๋ค์ด ๋์ผํ ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ ์์๋ค.