2013๋ INC์์ ์ถ์ํ ์คํ ์์ค ์ปจํ ์ด๋ AWS, Google Clud Platform, MS Azure ํด๋ผ์ฐ๋ ์๋น์ค ๊ณต์ ์ง์
- ๋ณต์กํ ๋ฆฌ๋ ์ค ํ๊ฒฝ์์ ์ปจํ ์ด๋๋ก ๋ฌถ์ด์ ์คํ์ด ๊ฐ๋ฅํ๋ค.
- ๊ฐ๋ฐ, ํ ์คํธ, ์๋น์ค ํ๊ฒฝ์ ํ๋๋ก ํต์ผํ์ฌ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ ํ ์ ์๋ค.
- ์ปจํ ์ด๋(์ด๋ฏธ์ง)๋ฅผ ์ ์ธ๊ณ ์ฌ๋๋ค๊ณผ ๊ณต์ ๊ฐ ๊ฐ๋ฅํ๋ค. => ๋ฆฌ๋ ์ค ์ปค๋์์ ์ ๊ณตํ๋ ์ปจํ ์ด๋ ๊ธฐ์ ์ ์ด์ฉ
- Docker Hub๋ฅผ ์ ๊ณตํ๋ค.
- ์ปจํ ์ด๋๋ ๊ฐ์ํ๋ณด๋ค ํจ์ฌ ๊ฐ๋ฒผ์ด ๊ธฐ์
-
์ปดํจํฐ ์์์ ์ปดํจํฐ๋ฅผ ๋ง๋ค์ด๋ด๊ธฐ ์ํ ์๋(1960๋ ๋์ ๊ฐ์ํ ๊ฐ๋ ์ด ๋ฑ์ฅ) ์ปดํจํฐ ์ฑ๋ฅ์ด ์ข์์ง๋ฉด์ PC์์๋ ํํ ์ฌ์ฉ
-
์๋ฒ์ ์ฑ๋ฅ์ด ํฅ์๋จ์ ๋ฐ๋ผ ์๋ฒ๊ฐ Task์ํ์ ํ์ง์์ ๊ฒฝ์ฐ๊ฐ ๋ ๋ง์์ง๊ฒ๋์์. ๊ทธ๋์ ์๋ฒ์ Task๋ฅผ ๋์ฑ ๋ ์ฌ์ฉ ์ํฌ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด๋ค๊ฐ, ์๋ฒ์ ๊ฐ์ ๋จธ์ ์ ์ฌ๋ฌ๊ฐ ๋์์ ์ผ์ ๋์ํค๊ธฐ๋ก ํ์์.
-
์๋ฒ๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ์๋ฒ์์ฒด๋ฅผ ๊ฐ์๋จธ์ ์ ์ง์ด ๋ฃ์ด์ ๋๋ฆฌ๊ธฐ๋กํ์ฌ ๊ฐ์ ๋จธ์ ์ ๊ฐ์ข ์๋ฒํ๋ก๊ทธ๋จ, DB๋ฑ์ ์ค์นํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์น์ฌ์ดํธ๋ฅผ ์คํ
-
๋ฏธ๋ฆฌ๊ตฌ์ถํ ๊ฐ์ ๋จธ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ณต์ฌํ์ฌ ์คํํ๋ฉด ์ด๋ฏธ์ง ํ๋๋ก ์๋ฒ๋ฅผ ๊ณ์ ๋ง๋ค์ด ๋ผ ์ ์์ => ๊ฐ์ํ๊ธฐ์
-
๊ฐ์ํ ๊ธฐ์ ์ ์ด์ฉํ์ฌ ์๋ฒ๋ฅผ ์๋ํด์ฃผ๋ ํด๋ผ์ฐ๋ ์๋น์ค
OS ์ปดํจํฐ ์ ์ฒด๋ฅผ ๋ง๋ค์ด ๋ฒ๋ฆฌ๋ฏ๋ก, ๊ฐ์ข ์ฑ๋ฅ ์์ค์ด ๋ฐ์ ์ธํ , AMD๋ CPU ์์ ๊ฐ์ํ ๊ธฐ๋ฅ์ ๋ฃ๊ธฐ ์์
ํธ์คํธ์ ์ปค๋์ ๊ณต์ ํ๋ ๋ฐ ๊ฐ์ํ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ค.
๊ฐ์ ๋จธ์ ์ ์์ ํ ์ปดํจํฐ -> ํญ์ ๊ฒ์คํธ OS๋ฅผ ์ค์นํด์ผํจ ์ด๋ฏธ์ง ์์ OS๊ฐ ํฌํจ ๋๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง ์ฉ๋์ด ์ปค์ง ๋คํธ์ํฌ๋ก ๊ฐ์ํ ์ด๋ฏธ์ง ๋ถ๋ด์ค๋ฌ์ ์คํ์์ค ๊ฐ์ํ ์ํํธ์จ์ด๋ OS ๊ฐ์ํ์๋ง ์ฃผ๋ ฅํ๋ฏ๋ก => ๋ฐฐํฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ ๋ถ์กฑ
์ปจํ ์ด๋ ์์ ๊ฐ์๊ณต๊ฐ์ ๋ง๋ค์ง๋ง, ์คํ ํ์ผ์ ํธ์คํธ์์ ์ง์ ์คํ ๋ฆฌ๋ ์ค ์ปค๋์ cgroups์ namespaces๊ฐ ์ ๊ณตํ๋ ๊ธฐ์ ๊ฐ์ํ๊ฐ ์๋ ๊ฒฉ๋ฆฌ
๋์ปค๋ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ค.
- ์ด๊ธฐ์๋ LXC(Linux Container)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ
- ๋ฒ์ 0.9๋ถํฐ๋ LXC๋ฅผ ๋์ ํ๋ libcontainer๋ฅผ ๊ฐ๋ฐํ์ฌ ์ฌ์ฉ
- ์คํ ์ต์ ์ผ๋ก ์ ํ ๊ฐ๋ฅ
๋์ปค๋ ๊ฒ์คํธ OS๋ฅผ ์ค์นํ์ง ์์
- ์ด๋ฏธ์ง์ ์๋ฒ ์ด์์ ์ํ ํ๋ก๊ทธ๋จ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๊ฒฉ๋ฆฌํด์ ์ค์น
- ์ด๋ฏธ์ง ์ฉ๋์ด ํฌ๊ฒ ์ค์ด๋ฆ
- ํธ์คํธ์ OS ์์(์์คํ ์ฝ)์ ๊ณต์ ๋์ปค๋ ํ๋์จ์ด ๊ฐ์ํ ๊ณ์ธต์ด ์์
- ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ, ํ์ผ ์์คํ , ๋คํธ์ํฌ ์ ์ก ์๋๊ฐ ๊ฐ์ ๋จธ์ ํด ๋นํด ์๋ฑํ ๋น ๋ฆ
- ํธ์คํธ์ ๋์ปค ์ปจํ ์ด๋ ์ฌ์ด์ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ํฌ์ง ์์(์ค์ฐจ ๋ฒ์ ์) ์ด๋ฏธ์ง ๋ฒ์ ๊ด๋ฆฌ๋ ์ ๊ณตํ๊ณ ์ค์ ์ ์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฆฌ๊ณ ๋ฐ์ ์ ์์(push / pull)
- Github์ ๋น์ทํ ํํ๋ก ๋์ปค์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ๋ Docker Hub์ ๊ณต(Github ์ฒ๋ผ ์ ๋ฃ ์ ์ฅ์๋ ์ ๊ณต)
- ๋ค์ํ API ๋ฅผ ์ ๊ณตํ์ฌ ์ํ๋ ๋งํผ ์๋ํ ๊ฐ๋ฅ ๊ฐ๋ฐ๊ณผ ์๋ฒ ์ด์์ ๋งค์ฐ ์ ์ฉ
์ด๋ฏธ์ง๋ ์๋น์ค ์ด์์ ํ์ํ ์๋ฒ ํ๋ก๊ทธ๋จ, ์์ค ์ฝ๋, ์ปดํ์ผ๋ ์คํ ํ์ผ์ ๋ฌถ์ ํํ (์ ์ฅ์์ ์ฌ๋ฆฌ๊ณ ๋ฐ๋๊ฑด ์ด๋ฏธ์ง)
์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ ์ด๋ฏธ์ง๋ก ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ๋ง๋ค ์ ์์
- ์ด์์ฒด์ ๋ก ๋น์ ํ๋ฉด ์ด๋ฏธ์ง๋ ์คํ ํ์ผ์ด๊ณ , ์ปจํ ์ด๋๋ ํ๋ก์ธ์ค
์ ๋์จ ํ์ผ ์์คํ ํ์(aufs, btrfs, devicemapper)
๋์ปค๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์์ ๋ฐ๋ ๋ถ๋ถ๋ง ์ด๋ฏธ์ง๋ก ์์ฑํ๋ค. ์ปจํ ์ด๋๋ก ์คํํ ๋๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ ๋ฐ๋ ๋ถ๋ถ์ ํฉ์ณ์ ์คํ Docker Hub ๋ฐ ๊ฐ์ธ ์ ์ฅ์์์ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ ๋ ๋ฐ๋ ๋ถ๋ถ๋ง ์ฃผ๊ณ ๋ฐ๋๋ค.
์๋น์ค ์ด์ ํ๊ฒฝ์ ์ด๋ฏธ์ง๋ก ์์ฑํ ๋ค ์๋ฒ์ ๋ฐฐํฌํ์ฌ ์คํ ์๋น์ค๊ฐ ์ ๋ฐ์ดํธ๋๋ฉด ์ด์ ํ๊ฒฝ ์์ฒด๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ , ์ด๋ฏธ์ง๋ฅผ ์๋ก ์์ฑํ์ฌ ๋ฐฐํฌ ํด๋ผ์ฐ๋ ํ๋ซํผ์์ ์๋ฒ๋ฅผ ์ฐ๊ณ ๋ฒ๋ฆฌ๋ ๊ฒ๊ณผ ๊ฐ์ด Immutable Infrastructure๋ ์๋น์ค ์ด์ ํ๊ฒฝ ์ด๋ฏธ์ง๋ฅผ ํ๋ฒ ์ฐ๊ณ ๋ฒ๋ฆผ.
ํธ์คํธ OS์ ์๋น์ค ์ด์ ํ๊ฒฝ(์๋ฒ ํ๋ก๊ทธ๋จ, ์์ค ์ฝ๋, ์ปดํ์ผ ๋ ๋ฐ์ด๋๋ฆฌ)์ ๋ถ๋ฆฌ ํ ๋ฒ ์ค์ ํ ์ด์ ํ๊ฒฝ์ ๋ณ๊ฒฝํ์ง ์๋๋ค(Immutable)
- ํธ๋ฆฌํ ๊ด๋ฆฌ
- ์๋น์ค ํ๊ฒฝ ์ด๋ฏธ์ง๋ง ๊ด๋ฆฌํ๋ฉด ๋๋ค.
- ์ค์ ๊ด๋ฆฌ๋ฅผ ํตํ ์ฒด๊ฒ์ ์ธ ๋ฐฐํฌ์ ๊ด๋ฆฌ
- ์ด๋ฏธ์ง ์์ฑ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ํ์ฉ
- ํ์ฅ์ฑ
- ์ด๋ฏธ์ง ํ๋๋ก ์๋ฒ๋ฅผ ๊ณ์ ์ฐ์ด๋ผ ์ ์์
- ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์๋ํ์ฅ(Auto Scaling)๊ธฐ๋ฅ๊ณผ ์ฐ๋ํ์ฌ ์์ฝ๊ฒ ์๋น์ค ํ์ฅ
- ํ ์คํธ
- ๊ฐ๋ฐ์ PC,ํ ์คํธ ์๋ฒ์์ ์ด๋ฏธ์ง๋ฅผ ์คํ๋ง ํ๋ฉด ์๋น์ค ์ด์ ํ๊ฒฝ๊ณผ ๋์ผํ ํ๊ฒฝ์ด ๊ตฌ์ฑ๋๋ค.
- ํ ์คํธ ๊ฐํธ
- ๊ฐ๋ณ๋ค
- ์ด์์ฒด์ ์ ์๋น์ค ํ๊ฒฝ์ ๋ถ๋ฆฌํ์ฌ ๊ฐ๋ณ๊ณ (Lightweight)์ด๋์๋ ์คํ ๊ฐ๋ฅํ(Portable)ํ๊ฒฝ ์ ๊ณต
๋์ปค์ ๊ณ ๋๋ ์ปจํ ์ด๋๋ฅผ ์ฃ๊ณ ๋ค๋๋ ๊ณ ๋ ๊ณ ๋๋ ์๋ฒ์์ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋(์ด๋ฏธ์ง)๋ฅผ ์คํํ๊ณ ์ด๋ฏธ์ง ์ ์ฅ๊ณผ ๋ฐฐํฌ(์ด๋ฐ)์ ์๋ฏธํ๋ค. ๋์ปค(Docker)๋ ๋ถ๋ ๋ ธ๋์๋ฅผ ๋ปํ๊ณ ์ปจํ ์ด๋๋ฅผ ๋ค๋ฃจ๋ ๋์ปค์ ๊ธฐ๋ฅ๊ณผ ๋น์ทํจ
๋์ปค๋ ์๋น์ค ์ด์ ํ๊ฒฝ์ ๋ฌถ์ด์ ์์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์คํํ๋ ๊ฒฝ๋ ์ปจํ ์ด๋ ๊ธฐ์
https://www.slideshare.net/pyrasis/docker-fordummies-44424016