IT์ ๊ณ์์ ์ข ์ฌํ๋ ์ฌ๋์ด๋ผ๋ฉด 'docker(๋์ปค)'๋ผ๋ ๋จ์ด๋ฅผ ๋ค์ด๋ณธ์ ์ด ์์๊ฒ์ด๋ค. ์ผ์ํ๋ฉด์๋ ๊ฒ์์ ํ ๋, ๋ค๋ฅธ ํ๋ค๊ณผ์ ํ์ ์ ์งํํ ๋, ์ ๊ธฐ์ ๊ด๋ จ ํ์๋ฅผ ์งํํ ๋ ๋ฑ๋ฑ ๋ค์ํ ์ํฉ์์ docker๋ผ๋ ๋จ์ด๊ฐ ๊ต์ฅํ ๋ง์ด ๋์ค๊ณ ์๋ค. ๊ทธ๋ ๋ค๋๊ฑด ํ ์๋๋ฅผ ์ด์๊ฐ๋ ์ฐ๋ฆฌ๋ค(IT์ ๊ณ ์ข ์ฌ์)์๊ฒ ์น์ํ๊ธฐ๋ํ๊ณ ์ค์ ๋ก๋ ๊ฐ์ฅ ๊ฐ๊น์ด ์๋ฆฌํ๊ณ ์๋ ๋์ปค(Docker)๋ผ๊ณ ํ๋ ์น๊ตฌ๊ฐ์ ์ด๋ ์์ ๋ํด์ ์์๋ณด๋๋ก ํด๋ณด์.
√ DOCKER ํ์๋ฐฐ๊ฒฝ
'Docker์ ๋ํด์ ์ข ๋ ์์ธํ๊ฒ ์์๋ณด์' ๋ผ๋ ๋ง์์ด ๋ค์์ ๋, ๊ฐ์ฅ ๋จผ์ ๊ถ๊ธํ๋ ์ฌํญ์ Docker์ ํ์๋ฐฐ๊ฒฝ์ด์๋ค. Docker๋ผ๋ ๋ ์์ ์ฌ์ฉํ๋๋ฐ์ ์์ด์ ๊ตณ์ด ํ์๋ฐฐ๊ฒฝ์ด๋ผ๋๊ฑธ ๊ผญ ์์์ผํ๋ ๋ผ๋ ์๊ฐ์ด ๋ค ์ ์์ง๋ง, Docker๋ผ๋ ๋ ์์ด ์ ์ธ์์ ๋ํ๋๊ฒ๋ฌ๊ณ ๋ํ๋จ์ผ๋ก ์ธํด์ ๋ฌด์์ ๋ชฉ์ ์ผ๋ก Docker๋ผ๋ ์ด ๋ ์์ ์ฌ์ฉํ๊ฒ ํ๋ ค ํ๋์ง์ ๋ํ ์ทจ์ง๊ฐ ๊ถ๊ธํด์ก๋ค.
Docker๋ 2013๋ ๋ด ์์ฆ์ Docker 0.9.0 ์ด๋ผ๋ ๋ฒ์ ์ ๋ฌ๊ณ ์ธ์์ ๋ํ๋ฌ๋ค. ์ธ์์ ๋์ค์๋ง์ ๋ง์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ํญ๋ฐ์ ์ธ ์ธ๊ธฐ๋ฅผ ๋๋ฆด ๋งํผ ๋งค๋ ฅ์ ์ธ ๋ ์์ด์๋ค๊ณ ํ๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ๊ฑด ๊ฐ์ํ ๊ธฐ์ ์ ํจ๋ฌ๋ค์์ ๋ณํ์ํจ ์ค์ํ ์ด์ ํ ์ค ํ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๊ฒ 2013๋ ๋ด ์์ฆ์ ํ์ด๋ Docker 0.9.0์ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ํ์ ํ๊ธฐ ์ํด ๋ง์ ๋ ธ๋ ฅ์ ํ๊ฒ ๋๋ค. ์ ํต์ ์ธ ๊ฐ์ํ ๊ธฐ์ ์ ๊ฐ์ ๋จธ์ (VM)์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ณ ํจํค์งํํ๋ ๋ฐ ์ค์ ์ ๋์๋ค. ์ด๋ฌํ VM์ ํธ์คํธ ์ด์ ์ฒด์ ์์์ ์์ ํ ๊ฒ์คํธ ์ด์ ์ฒด์ (๊ฐ์ OS)๋ฅผ ์คํํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค.
๊ทธ๋ฌ๋ VM์ ์๋์ ์ผ๋ก ๋ฌด๊ฒ๊ณ ์์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ฉฐ, ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์๋ชจํ๋ ๋จ์ ์ด ์๋ค. ํธ์คํธ OS์์ ๊ฒ์คํธOS๊ฐ ํ์ฌ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ฐ์์ผ๋ก ๋ง๋ค์ด์ง๋ ์ด์์ฒด์ ๋ฅผ ๋๋ฆฌ๊ธฐ ์ํด์ ํธ์คํธ OS ์์์ ์ด์ฉํ๊ฒ ๋๊ณ ๊ทธ๋ ๊ฒ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ ์ฒ๋ฆฌ์ ๋ค์ด๊ฐ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ์ก์๋จน๊ฒ ๋ ๊ฒ์ด๋ค. ํนํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ๋๊ท๋ชจ ๋ฐฐํฌ ์์๋ ๋น์ฉ๊ณผ ๊ด๋ฆฌ ๋ถ๋ด๋ ์ปค์ง๊ฒ์ด๋ค.
Docker๋ ์ด๋ฌํ ๋ฌธ์ ์ ๋ํ ๋์์ผ๋ก ๊ฐ๋ฐ๋์๋ค๊ณ ํ๋ค. Docker๋ ์ปจํ ์ด๋๋ผ๋ ๊ฒฝ๋ํ๋ ๊ฐ์ํ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจํค์งํํ๊ณ ์คํํ๋ ๋ฐ ์ค์ ์ ๋์๋ค. ์ปจํ ์ด๋๋ ํธ์คํธ ์ด์ ์ฒด์ ์ ์ปค๋์ ๊ณต์ ํ๋ฏ๋ก VM๋ณด๋ค ๋ ๊ฐ๋ณ๊ณ ์์ ์๊ฐ์ด ๋น ๋ฅด๋ฉฐ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ๋ฏ, Docker์ ๋ฑ์ฅ์ ๊ฐ๋ฐ์์ ์ด์ํ ์ฌ์ด์ ๊ฐ๊ทน์ ์ค์ผ ์ ์๊ณ , ๊ฐ๋ฐ๋ถํฐ ์ด์๊น์ง์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋จ์ํํ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์๋ค. ์ด๋ฌํ ์ด์ ์ผ๋ก Docker๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ์ ์๋ก์ด ํ์ค์ผ๋ก ์๋ฆฌ ์ก์๋ค.
√ DOCKER ๋?
"๊ฐ๋ฐ์๊ฐ ์ปจํ ์ด๋ ๋ด์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ํํ ์ ์๋ ์คํ ์์ค ํ๋ซํผ"
Docker๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํ ํ๋ซํผ, ์ค์น ํ๊ฒฝ ๋ฑ๋ฑ์ ์ปจํ ์ด๋ ๋ด์์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ํํ ์ ์๋ ๊ฐ๋ฐฉํ ํ๋ซํผ์ด๋ผ ํ๋ค. Docker ๊ณต์ ์ฌ์ดํธ ๋ด, docs์์๋ ์๋์ ๊ฐ์ด ์ค๋ช ํ๊ณ ์๋ค.
' Docker๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐ, ์ ๊ณต ๋ฐ ์คํํ๊ธฐ ์ํ ๊ฐ๋ฐฉํ ํ๋ซํผ, ๊ทธ๋ฆฌ๊ณ Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธํ๋ผ์์ ๋ถ๋ฆฌํ์ฌ ์ํํธ์จ์ด๋ฅผ ์ ์ํ๊ฒ ์ ๊ณตํ ์ ์๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. ์ฝ๋๋ฅผ ์ ์ํ๊ฒ ์ ๋ฌ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ๊ธฐ ์ํ Docker์ ๋ฐฉ๋ฒ๋ก ์ ํ์ฉํ๋ฉด ์ฝ๋ ์์ฑ๊ณผ ํ๋ก๋์ ํ๊ฒฝ ์คํ ์ฌ์ด์ ์ง์ฐ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.' ๋ผ๊ณ ์ค๋ช ํ๊ณ ์๋ค.
Docker๋ ์ ์ด๋ฏธ์ง์ฒ๋ผ, ์ปจํ ์ด๋๋ฅผ ๊ฐ๋ ์ฃ๊ณ ์๋ ๋ฐฐ๋ฅผ ๋ ์ฌ๋ฆฌ๋ฉด ๋๋๋ฐ ์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ํฐ ์ ๋ฐ๋ค์ ๋ณด๋ฉด ์ฌ๋ฌ ์ข ๋ฅ์ ์ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ปจํ ์ด๋๋ค์ ๊ฐ๋ ์ฃ๊ณ ์๋ ๋ชจ์ต์ด๋ค. Docker ๋ํ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ ํ๋ซํผ, ํด๋น ํ๊ฒฝ์ ํฌํจํ ์ํํธ์จ์ด ๋ฑ๋ฑ์ด ๊ฐ๊ฐ ์ปจํ ์ด๋์ ๊ตฌ์ฑ๋์ด Docker๋ผ๋ ์ ๋ฐ์ ์ค๋ ค์๋ ๊ฒ์ด๋ค.
๊ธฐ์กด์ ๊ฐ์ํ ๊ธฐ์ ๊ณผ ๋ฌ๋ฆฌ Docker๋ ๊ฐ์ํ ์ค๋ฒํค๋๋ฅผ ์ต์ํํ๊ณ , ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
Docker ์ปจํ ์ด๋๋ ํธ์คํธ ์ด์ ์ฒด์ ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋ฉฐ, ๊ฐ์ ๋จธ์ ๊ณผ ๋ฌ๋ฆฌ ๋ณ๋์ ๊ฒ์คํธ ์ด์ ์ฒด์ ๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค. ์ฌ๊ธฐ์ VM๊ณผ Container์ ์ฐจ์ด์ ์ ์ ์ ์๋ค. VM์ ํธ์คํธ OS์์ ๊ฒ์คํธ OS์ ๊ฐ์ ์ด์ ์ฒด์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํธ์คํธ OS์ ์์์ ํ ๋น๋ฐ์ ์ฌ์ฉํ๊ฒ๋๊ณ ๊ทธ๋ก์ธํด ์๋๊ฐ ๋๋ ค์ง๊ณ ๋ฌด๊ฑฐ์์ง๋ ๋จ์ ์ด ์๊ธด๋ค. ํ์ง๋ง Docker Container๋ ๋ณ๋์ ๊ฒ์คํธ OS๋ฅผ ๊ฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋๊ฒ์ด๋ค.
Docker๋ ๊ฐ๋ฐ์์ ์ด์ํ ๊ฐ์ ํ์ ์ ๊ฐํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ๋ฅผ ๋จ์ํํ๋ ๋ฐ ํฐ ๋์์ด ๋๋ค. ๋ํ ๋ค์ํ ํ๊ฒฝ์์ ์ผ๊ด๋ ๊ฐ๋ฐ ๋ฐ ์คํ ํ๊ฒฝ์ ์ ๊ณตํ์ฌ ์ด์์ฑ์ ํฅ์์ํค๊ณ , ๋์ฑ ์ฌ์ด ํ์ฅ์ฑ์ ์ ๊ณตํ๋ค. Docker๋ ์คํ ์์ค์ด๋ฉฐ, ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ ์ ํตํด ์ง์์ ์ผ๋ก ๋ฐ์ ํ๊ณ ์๋ค.
√ DOCKER ๋์ ๋ฐฉ์
Docker ์ํคํ ์ณ
๋์ปค ๊ณต์ ์ฌ์ดํธ์์ ์ํคํ ์ฒ๋ฅผ ์๊ฐ์ ์๋ฃ๋ก ํํํ ๊ฒ์ด๋ค. Docker๋ ํด๋ผ์ด์ธํธ - ์๋ฒ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ๋ค.
Docker ํด๋ผ์ด์ธํธ๋ Docker ์ปจํ ์ด๋๋ฅผ ๊ตฌ์ถ, ์คํ ๋ฐ ๋ฐฐํฌํ๋ ๋ฌด๊ฑฐ์ด ์์ ์ ์ํํ๋ Docker ๋ฐ๋ชฌ๊ณผ ํต์ ํ๋ค. Docker ํด๋ผ์ด์ธํธ์ ๋ฐ๋ชฌ์ ๋์ผํ ์์คํ ์์ ์คํ๋ ์ ์๊ณ ๋๋ Docker ํด๋ผ์ด์ธํธ๋ฅผ ์๊ฒฉ Docker ๋ฐ๋ชฌ์ ์ฐ๊ฒฐํ ์๋ ์๋ค. Docker ํด๋ผ์ด์ธํธ์ ๋ฐ๋ชฌ์ UNIX ์์ผ ๋๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ํตํด REST API๋ฅผ ์ฌ์ฉํ์ฌ ํต์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ Docker ํด๋ผ์ด์ธํธ๋ Docker Compose๋ก ์ด๋ฅผ ํตํด ์ปจํ ์ด๋ ์ธํธ๋ก ๊ตฌ์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ์์ ํ ์ ์๋ค.
๋์ปค ๋ฐ๋ชฌ
Docker ๋ฐ๋ชฌ(dockerd)์ Docker API ์์ฒญ์ ์์ ํ๊ณ ์ด๋ฏธ์ง, ์ปจํ ์ด๋, ๋คํธ์ํฌ, ๋ณผ๋ฅจ๊ณผ ๊ฐ์ Docker ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค. ๋ฐ๋ชฌ์ Docker ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ฐ๋ชฌ๊ณผ ํต์ ํ ์๋ ์๋ค.
๋์ปค ํด๋ผ์ด์ธํธ
Docker ํด๋ผ์ด์ธํธ๋ ๋ง์ Docker ์ฌ์ฉ์๊ฐ Docker์ ์ํธ ์์ฉํ๋ ๊ธฐ๋ณธ ๋ฐฉ๋ฒ์ด๋ค. docker run๊ณผ ๊ฐ์ ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด๋ฌํ ๋ช ๋ น์ ์คํํ๋ docker๋ก ๋ณด๋ด ์ด๋ฅผ ์ํํ๋ค.
๋์ปค ๋ฐ์คํฌํ
Docker Desktop์ ์ปจํ ์ด๋์๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ง์ดํฌ๋ก ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ณ ๊ณต์ ํ ์ ์๋ Mac, Windows ๋๋ Linux ํ๊ฒฝ์ ์ํ ์ค์น๊ฐ ์ฌ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค. Docker Desktop์๋ Docker ๋ฐ๋ชฌ, Docker ํด๋ผ์ด์ธํธ, Docker Compose, Docker Content Trust, Kubernetes ๋ฐ ์๊ฒฉ ์ฆ๋ช ๋์ฐ๋ฏธ๊ฐ ํฌํจ๋์ด ์๋ค.
๋์ปค ๋ ์ง์คํธ๋ฆฌ
Docker ๋ ์ง์คํธ๋ฆฌ๋ Docker ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ค. Docker Hub๋ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ ๋ ์ง์คํธ๋ฆฌ์ด๋ฉฐ Docker๋ ๊ธฐ๋ณธ์ ์ผ๋ก Docker Hub์์ ์ด๋ฏธ์ง๋ฅผ ์ฐพ๋๋ค. ์์ ๋ง์ ๊ฐ์ธ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์คํํ ์๋ ์๋ค. docker pull ๋๋ docker run ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด Docker๋ ๊ตฌ์ฑ๋ ๋ ์ง์คํธ๋ฆฌ์์ ํ์ํ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์จ๋ค. docker push ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด Docker๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑ๋ ๋ ์ง์คํธ๋ฆฌ์ ํธ์ํ๋ค.
Docker ํต์ฌ ๊ตฌ์ฑ์์
Docker์ ๋์๋ฐฉ์์ ์ดํดํ๊ธฐ ์ํด์๋ ์ ์ฒด์ ์ธ ์ํคํ ์ณ ๊ตฌ์กฐ๋ฅผ ํ์ ํ๊ณ , ์ํคํ ์ณ ๊ตฌ์กฐ์์ ์ฌ์ฉ๋๋ ์ฉ์ด๋ฅผ ๋จผ์ ์์์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ , Docker์ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์์์ผํ๋ค.
Docker ์์ง(Engine)
ํธ์คํธ ์์คํ ์์ ์คํ๋๋ ์๋น์ค๋ก, ํต์ฌ ์ญํ ์ ๋ด๋นํ๋ ์ํํธ์จ์ด์ด๋ค. Docker์์ง์ ์ฌ์ฉ์์ ๋ช ๋ น์ ํด์ํ๊ณ , ์ด๋ฏธ์ง ๋น๋, ์ปจํ ์ด๋ ์คํ, ๋คํธ์ํน, ์ ์ฅ์ ๊ด๋ฆฌ ๋ฑ๋ฑ์ ์ํ, ๊ด๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ , Docker ์์ง์ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ๊ธฐ์ (LXC)์ ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋๋ฅผ ์์ฑ ๋ฐ ๊ด๋ฆฌํ๊ณ Linux,Windows,macOS ๋ฑ ๋ค์ํ ์ด์ ์ฒด์ ์์ ๋์ํ๋ฉฐ, ์ฃผ๋ก CLI(Command Line Interface)๋ฅผ ํตํด ์ฌ์ฉ๋๋ค.
์ด๋ฏธ์ง(Image)
Docker ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ํ ํ๋ฆฟ์ด๋ค. ์ด๋ฏธ์ง๋ ์ฌ๋ฌ ๊ณ์ธต(layer)์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ ๊ณ์ธต์ ํ์ผ ์์คํ ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ๋ด๊ณ Dockerfile์ ์ฌ์ฉํ์ฌ ์ ์๋๋ค. ์ ์๋ Dockerfileํ์ผ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๋ ๋ช ๋ น๊ณผ ์ค์ ์ด ํฌํจ๋์ด ์๋ค. ์ด๋ฏธ์ง๋ Docker Hub์ ๊ฐ์ ์ ์ฅ์์ ์ ์ฅ๋์ด ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
์ปจํ ์ด๋(Container)
Docker ์ด๋ฏธ์ง์ ์ธ์คํด์ค๋ก, ์คํ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ํฌํจํ๋ค. ์ปจํ ์ด๋๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ์คํ๋๋ฉฐ, ํธ์คํธ ์์คํ ์ ์์์ ๊ณต์ ํ๊ฑฐ๋ ๊ฒฉ๋ฆฌ๋ ๋คํธ์ํฌ ๋ฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๊ฐ ์ปจํ ์ด๋๋ ๊ณ ์ ํ ํ์ผ ์์คํ ์ ๊ฐ์ง๋ฉฐ, ํด๋น ํ์ผ ์์คํ ์ ํด๋น ์ด๋ฏธ์ง์ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ณ์ธต ์์ ๊ตฌ์ถ๋๋ค.
๋์ปค ํ์ผ(DockerFile)
Docker ์ด๋ฏธ์ง๋ฅผ ์ ์ํ๋ ํ ์คํธ ํ์ผ์ด๋ค. ํด๋น ํ์ผ์๋ ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ๋ช ๋ น๊ณผ ์ค์ ์ด ํฌํจ๋์ด ์์ผ๋ฉฐ FROM, RUN, COPY, CMD ๋ฑ์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ค. ์๋๋ FROM, COPY ๋ฑ๋ฑ์ ์ฌ์ฉ ๋ช ๋ น์ด๋ฅผ ์์๋ก ๋ค์ด๋ณธ๋ค.
# ์ด๋ฏธ์ง ์ ์
FROM ubuntu:latest
# ์์
๋๋ ํ ๋ฆฌ ์ค์
WORKDIR /app
...
Dockerfile์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ ์ค์ , ์ข ์์ฑ ์ค์น, ์คํ ๋ช ๋ น ๋ฑ์ ์ ์ํ๋ค.
๋์ปค ํ๋ธ(Docker Hub)
Docker ์ด๋ฏธ์ง์ ๊ณต์ ์ ์ฅ์์ด๋ค. ๊ฐ๋ฐ์๋ค์ Docker Hub์์ ์ด๋ฏธ์ง๋ฅผ ๊ณต์ ํ๊ณ , ๋ค๋ฅธ ์ฌ์ฉ์์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ ์ ์๋ค. Docker Search๋ฅผ ํตํด์ ์ฌ์ฉ์๊ฐ ๊ณต์ ํ ์ด๋ฏธ์ง๋ค์ ๊ฒ์ํ์ฌ pull๋ฐ์ ์ ์๋ค. Docker Hub๋ ๋ฌด๋ฃ ๋ฐ ์ ๋ฃ ๊ณ์ ์ ์ ๊ณตํ๋ฉฐ, ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์ด๋ฏธ์ง ์ธ์๋ ๊ฐ์ธ ๋ฐ ์กฐ์ง์ฉ ๊ฐ์ธ ์ ์ฅ์๋ฅผ ์ ๊ณตํ๋ค.
๋์๋ฐฉ์
๊ฐ๋ฐ์๋ Dockerfile ์ด๋ผ๋ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ ์ํ๋๋ฐ ์ ์๋ Dockerfile์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๊ฒฝ ์ค์ , ์ข ์์ฑ, ์คํ ๋ช ๋ น ๋ฑ์ด ํฌํจ๋๋ค. ์ ์๋ Dockerfile์ ์ฌ์ฉํ์ฌ Docker์์ง์ด ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ํด๋น ๊ณผ์ ์์ Dockerfile์ ์ ์๋ ๋ช ๋ น์ ์์๋๋ก ์คํํ๊ณ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ค. ์์ฑ๋ ์ด๋ฏธ์ง๋ Docker Hub์ ๊ฐ์ ์ด๋ฏธ์ง ์ ์ฅ์์ ๊ณต์ ํ ์ ์๊ณ ๊ณต์ ๋ ์ด๋ฏธ์ง๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ์์คํ ์์ ๋ค์ด๋ก๋ํ์ฌ ์ฌ์ฉํ ์ ์๋ค. ๋น๋๋ฅผ ํตํด ์์ฑ๋ Docker ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Docker ์์ง์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค. ํด๋น ๊ณผ์ ์์ ์ด๋ฏธ์ง์ ํ์ผ ์์คํ ๊ณผ ์ค์ ์ด ์ปจํ ์ด๋๋ก ๋ณต์ ๋๊ณ , ์ปจํ ์ด๋๊ฐ ์คํ๋๋ค.
์ปจํ ์ด๋๊ฐ ์คํ๋๋ฉด ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ด ํธ์คํธ OS์์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ๋์ํ๊ฒ ๋๋๋ฐ, ํธ์คํธ ์์คํ ์ ์์(CPU, ๋ฉ๋ชจ๋ฆฌ ๋ฑ)์ ์ฌ์ฉํ๋ฉฐ ํ์์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ์ค์ ์ ํตํด ์ธ๋ถ์ ํต์ ํ ์ ์๋ค.
์ด๋ ๋ฏ, Docker๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ณ ์คํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ผ๋ก Docker๋ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํ๊ณ , ์ด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฅ์์ํฌ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ณ ์๋ค.
√ ๊ฐ์ ๋จธ์ (Virtual Machine) VS ๋์ปค ์ปจํ ์ด๋(Docker Container)
๊ฐ์ ๋จธ์ (Virtual Machine)์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ด์ฉํด ์ฌ๋ฌ๊ฐ์ ์ด์์ฒด์ ๋ฅผ ํ๋์ ํธ์คํธ์์ ์์ฑํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ด๋ฌํ ์ฌ๋ฌ ๊ฐ์ ์ด์์ฒด์ ๋ ๊ฐ์ ๋จธ์ ์ด๋ผ๋ ๋จ์๋ก ๊ตฌ๋ณ๋๊ณ ๊ฐ ๊ฐ์๋จธ์ ์๋ ubuntu, centOS ๋ฑ์ ์ด์์ฒด์ ๊ฐ ์ค์น๋์ด ์ฌ์ฉ๋๋ค. ๊ทธ๋์ ํ์ดํผ๋ฐ์ด์ ์ ์ํด ์์ฑ๋๊ณ ๊ด๋ฆฌ๋๋ ์ด์์ฒด์ ๋ GuestOS๋ผ๊ณ ํ๊ณ ๊ฐ ๊ฒ์คํธ ์ด์์ฒด์ ๋ ๋ค๋ฅธ ๊ฒ์คํธ ์ด์์ฒด์ ์๋ ์์ ํ ๋ ๋ฆฝ๋ ๊ณต๊ฐ๊ณผ ์์คํ ์์์ ํ ๋น๋ฐ์ ์ฌ์ฉํ๋ค. ์ด๋ฌํ ๊ฐ์ํ ๋ฐฉ์์ ์ฌ์ฉํ๋ ํด์ VirtualBox, VMware ๋ฑ์ด ์๋ค. ๊ทธ๋ฌ๋, ๊ฐ์ข ์์คํ ์์์ ๊ฐ์ํํ๊ณ ๋ ๋ฆฝ๋ ๊ณต๊ฐ์ ์์ฑํ๋ ์์ ์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ๋ฐ๋์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ํธ์คํธ์ ๋นํด ์ฑ๋ฅ์ ์์ค์ด ๋ฐ์ํ๋ค. ๊ทธ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ ๋จธ์ ์ ๊ฒ์คํธ ์ด์์ฒด์ ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปค๋ ๋ฑ์ ์ ๋ถ ํฌํจํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋จธ์ ์ ๋ฐฐํฌํ๊ธฐ ์ํ ์ด๋ฏธ์ง๋ก ๋ง๋ค์์ ๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ ๋ํ ์ปค์ง๋ค.
๋์ปค ์ปจํ ์ด๋(Docker Container)๋ ๊ฐ์ํ๋ ๊ณต๊ฐ์ ์์ฑํ๊ธฐ ์ํด Linux ์์ฒด ๊ธฐ๋ฅ์ chroot, namespace, cgroup์ ์ฌ์ฉํจ์ผ๋ก์จ ํ๋ก์ธ์ค ๋จ์์ ๊ฒฉ๋ฆฌ ํ๊ฒฝ์ ๋ง๋ค์ด ๋๋ฌธ์ ์ฑ๋ฅ ์์ค์ด ๊ฑฐ์ ์๋ค. ์ปจํ ์ด๋์ ํ์ํ ์ปค๋์ ๊ณต์ ํด์ ์ฌ์ฉํ๊ณ ์ปจํ ์ด๋ ์์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ๋ ๋ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์คํ ํ์ผ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์ง๋ก ๋ง๋ค์์ ๋ ์ด๋ฏธ์ง์ ์ฉ๋ ๋ํ ๊ฐ์ ๋จธ์ ์ ๋นํด ๋ํญ ์ค์ด๋ ๋ค. ๋ฐ๋ผ์ ์ปจํ ์ด๋๋ฅผ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ๋ฐฐํฌํ๋ ์๊ฐ์ด ๊ฐ์ ๋จธ์ ์ ๋นํด ๋น ๋ฅด๋ฉฐ, ๊ฐ์ํ๋ ๊ณต๊ฐ์ ์ฌ์ฉํ ๋์ ์ฑ๋ฅ ์์ค๋ ๊ฐ์ ์๋ค.
๊ฐ์ํ ์์ค
๊ฐ์ ๋จธ์ (Virtual Machine)์ ํธ์คํธ ์ด์์ฒด์ ์์์ ๊ฒ์คํธ ์ด์ ์ฒด์ ๋ฅผ ์คํํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ์ด๋ ํธ์คํธ์ ๊ฒ์คํธ ๊ฐ์ ์์ ํ ์ด์ ์ฒด์ ๋ฐ ํ์ดํผ๋ฐ์ด์ ๊ฐ ํ์ํ๋ฏ๋ก ๋ฌด๊ฒ๊ณ ๋ฆฌ์์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋, ๋์ปค ์ปจํ ์ด๋๋ ํธ์คํธ ์ด์ ์ฒด์ ์ ์ปค๋์ ๊ณต์ ํ๋ฏ๋ก ๊ฒ์คํธ ์ด์ ์ฒด์ ๋ ํ์ดํผ๋ฐ์ด์ ๊ฐ ํ์ํ์ง ์๋ค. ์ด๋ก ์ธํด ๊ฐ์๋จธ์ ๋ณด๋ค ๋ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ฉฐ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
์์ ์๊ฐ๊ณผ ์ฑ๋ฅ
๊ฐ์๋จธ์ ์ ์์ํ๋๋ฐ ๋ช์ด์์ ๋ช๋ถ๊น์ง ์์๋ ์ ์์ผ๋ฉฐ, ์์ ํ ๋น ๋ฐ ์์ ์๊ฐ์ด ์๋์ ์ผ๋ก ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๋ํ ๊ฒ์คํธ ์ด์ ์ฒด์ ๋ฅผ ์์ํ๋๋ฐ ์ถ๊ฐ์ ์ธ ์๊ฐ์ด ์์๋๋ค. ๊ทธ๋ฌ๋, ๋์ปค ์ปจํ ์ด๋๋ ๋น ๋ฅด๊ฒ ์์๋๋ฉฐ, ๋ช ์ด์์ ์คํ๋ ์ ์๋ค. ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฏ๋ก ์ปจํ ์ด๋์ ์์ ์๊ฐ์ ์ด๋ฏธ์ง์ ๋ค์ด๋ก๋ ๋ฐ ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค.
์ด์์ฑ
๊ฐ์๋จธ์ ์ ํธ์คํธ ์ด์์ฒด์ ์ ์๊ด์์ด ์คํ๋ ์ ์๋ค. ํ์ง๋ง VM์ ์ด๋ํ๊ฑฐ๋ ๊ณต์ ํ๊ธฐ ์ํด์๋ ๊ฐ์ํ ์ํํธ์จ์ด ๋ฐ ํธ์ฝ์ผ ์ด์ ์ฒด์ ์์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋์ปค ์ปจํ ์ด๋๋ ํธ์คํธ ์ด์์ฒด์ ์ ์ปค๋์ ๊ณต์ ํ๋ฏ๋ก ์ด์์ฑ์ด ๋ฐ์ด๋๋ค. ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ํ๊ฒฝ์์ ์คํํ ์ ์์ผ๋ฉฐ, Docker Hub์ ๊ฐ์ ์ด๋ฏธ์ง ๋ ์ง์คํธ๋ฆฌ๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ๊ณ ๋ฐฐํฌํ ์ ์๋ค.
๋ฆฌ์์ค ์ฌ์ฉ
๊ฐ์๋จธ์ ์ ๊ฐ VM์ด ๋ ๋ฆฝ์ ์ธ ์ด์ ์ฒด์ ๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์คํฌ ๊ณต๊ฐ์ ๋ง์ด ์๋นํ๋ค. ๋ํ ๊ฐ์ํ ๋ ์ด์ด๋ก ์ธํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค. ๊ทธ๋ฌ๋ ๋์ปค ์ปจํ ์ด๋๋ ๊ฐ๋ฒผ์ฐ๋ฉฐ, ์ปจํ ์ด๋ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๊ณต์ ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์คํฌ ์ฌ์ฉ๋์ด ์ ๋ค. ๋ํ ๋์ปค ์์ง์ ์ปจํ ์ด๋๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ์ฌ ๋ ์ ์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํจ๋ค.
์ ์ด๋ฏธ์ง์ฒ๋ผ ๊ฐ์ ๋จธ์ ์ ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ์ด์ ์ฒด์ ์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ํธ์คํธ ์์ฝ์ ์์ ์คํ๋๋ค. ๋ฐ๋ฉด ๋์ปค ์ปจํ ์ด๋๋ ํธ์คํธ ์ด์์ฒด์ ์ ์ปค๋์ ๊ณต์ ํ๋ฉฐ, ๋์ปค ์์ง ์์์ ์คํ๋๋ค. ์ด๋ฅผ ํตํด ๋์ปค ์ปจํ ์ด๋๋ ๊ฐ์๋จธ์ ๋ณด๋ค ๊ฐ๋ณ๊ณ ๋น ๋ฅด๋ฉฐ ์ด์์ฑ์ด ๋ฐ์ด๋๋ค๋ ์ฅ์ ์ด ์๋ค.
@Junesker