[๋คํธ์ํฌ] ๋์ปค(Docker)๋?
๋์ปค๋?
๋์ปค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์๋ ์ํํธ์จ์ด ํ๋ซํผ์ ๋๋ค.
- Go์ธ์ด๋ก ์์ฑ๋ ๋ฆฌ๋ ์ค ์ปจํ ์ด๋ ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ
- ์ ํ๋ฆฌ์ผ์ด์ ์คํํ๊ฒฝ์ ์ฝ๋๋ก ์์ฑํ ์ ์์
- OS๋ฅผ ๊ณต์ , ๊ฒฉ๋ฆฌํํ์ฌ ๊ด๋ฆฌํ ์ ์์
์ฆ, ๋์ปค๋ ๋ ๋ฆฝ๋ ํ๊ฒฝ์ ๋ง๋ค์ด์ ํ๋์จ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ๊ธฐ์ ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Docker๋ ํ์ฌ ๋ง์ ์๋น์ค์์ ์ฌ์ฉ๋๊ณ ์๋ ๊ธฐ์ ๋ก์ ํนํ *MSA์ ๋จ์ ์ธ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ํด๊ฒฐํด์ฃผ๊ธฐ ์ํด ์๋น์ค์ ์ปจํฐ์ด๋ํ๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ Docker์ Kubernetes๊ฐ ๋ง์ด ๋์ ๋์์ต๋๋ค.
*MSA : ์๋น์ค๊ฐ์ ์์กด์ฑ์ ์์ ๊ณ ๊ธฐ๋ฅ์ ์ชผ๊ฐ๋ ๊ฒ์ ์ค์ ์ ์ผ๋ก ์ค๊ณํ ์ํคํ ์ฒ
๊ฐ์ํ๋ฅผ ์ฌ์ฉํ๋ ์ด์
๊ฐ์ํ๋ ํ๋์ ํ๋์จ์ด๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ๋จธ์ ์ผ๋ก ๋ถํ ํด ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๊ธฐ์ ์ ๋๋ค.
CPU์ ์ฌ์ฉ๋ฅ ์ด ๋ฎ์ ์๋ฒ๋ค์ ๋ฆฌ์์ค ๋ญ๋น์ด๊ณ ๊ทธ๋ ๋ค๊ณ ๋ชจ๋ ์๋น์ค๋ฅผ ํ ์๋ฒ์์ ์ฌ๋ฆฐ๋ค๋ฉด ์์ ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธธ์๋ ์๊ธฐ ๋๋ฌธ์ ์์ ์ฑ์ ๋์ด๋ฉฐ ๋ฆฌ์์ค๋ ์ต๋ํ ํ์ฉํ ์ ์๋ ์๋ฒ ๊ฐ์ํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฆฌ๋ ์ค ์ปจํ ์ด๋๋?
์ปจ๋ฐ์ด๋๋ ๊ฐ์ํ ๊ธฐ์ ์ค ํ๋๋ก ๋ํ์ ์ผ๋ก LXC(Linux Container)๊ฐ ์์ต๋๋ค.
- Linux ๊ธฐ๋ฐ์ ๊ธฐ์ ์ค ํ๋
- ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ์์ ๋ง์น ๋ณ๋์ ์๋ฒ์ฒ๋ผ ๊ตฌ์ฑํ ๊ฒ
- ์ปจํ ์ด๋๋ฅผ ์ด๋ฃจ๋ ๋คํธ์ํฌ ์ค์ , ํ๊ฒฝ ๋ณ์ ๋ฑ์ ์์คํ ์์์ ๊ฐ ์ปจํ ์ด๋๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์์
๊ฐ์ํ ๊ธฐ์ vs ๋์ปค ๊ฐ์ํ ํ๋ซํผ
- Legacy
- ํ๋์ ๋ฌผ๋ฆฌ ์๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
- ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฏธ๋ค์จ์ด ๋ฒ์ ์ ์ถฉ๋์ด ๋ฐ์ ํ ์ ์์
- Hosted Hypervisor(๊ฐ์ํ ์ํํธ์จ์ด)
- *Host OS ์์ ๊ฐ์ํ ์ํํธ์จ์ด๋ฅผ ์ค์นํด์ ๊ฐ์ํ๊ฒฝ ๊ตฌ์ถ
- ๊ฐํธํด์ ํด๋ผ์ด์ธํธ PC ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ๊ฑฐ๋ ํ ์คํธ๋ฅผ ์ํด ์ฃผ๋ก ์ฌ์ฉ
- ์ปจํ ์ดํฐ์ ๋ค๋ฅด๊ฒ *Guest OS๊ฐ ์กด์ฌํ์ฌ ์ค๋ฒํค๋๊ฐ ๋น๊ต์ ํผ
- Bare Metal Hypervisor
- Host OS ์์ด ํ๋์จ์ด์ ์ง์ ํ์ดํผ๋ฐ์ด์ ๋ฅผ ์ค์น
- Host OS๊ฐ ์์ด ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์
- ๊ฐ์ ๋จธ์ ๋ค์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ฝ์์ด ํ์
- Container
- Guest OS๊ฐ ์๊ณ Host OS์ ์ปค๋์ ๊ณต์ ํ์ฌ ์ค๋ฒํค๋๊ฐ ์ ๊ณ ๊ฐ๋ฒผ์์ ๋น ๋ฆ
- OS ์คํ ์์ด ๋ณ๋์ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๊ฐ๋ฅ (๊ฐ์์ OS๋ฅผ ๋ง๋ค์ง ์์)
- ์ด์ง์ฑ๊ณผ ํ์ ์ฑ์ด ๋์
*Host OS : ๋ฒ ์ด์ค๊ฐ ๋๋ ๊ธฐ์กด ํ๊ฒฝ
*Guest OS : ๊ฐ์ ๋จธ์ ์ผ๋ก ๋ถํ ๋ ๊ฐ๊ฐ์ ํ๊ฒฝ
๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๊ฒ ์๋ง์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋์ปค๋ ์ปจํ ์ดํฐ ๊ธฐ์ ์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ ๋๋ค.
๋์ปค ์ด๋ฏธ์ง
๋์ปค ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๋ ์คํํ์ผ, ์ค์ ๊ฐ ๋ค์ ๊ฐ์ง๊ณ ์์ด ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ Base ํ์ผ์ ๋๋ค.
์ด๋ฏธ์ง๋ ๋ ์ด์ด๋ผ๋ ๊ณ์ธต ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ, ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ์๋ก์ด ๋ ์ด์ด๋ฅผ ์ถ๊ฐํด์ ๊ธฐ๋กํ๋๋ฐ, ์ด๋ฌํ ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ฉด ํ๋ก์ธ์ค, ์ฆ ์ปจํ ์ด๋๊ฐ ๋ฉ๋๋ค.
์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด Image๋ฅผ ์ปจํ ์ด๋์ ๋ด๊ณ ์คํํ๋ฉด ํด๋น ํ๋ก์ธ์ค๊ฐ ๋์ํ๊ฒ ๋ฉ๋๋ค.
์ด๋ฏธ์ง๊ฐ ๋ง๋ค์ด์ง๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ubuntu ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด Layer A, B, C๊ฐ ๋ค์ด๊ฐ
- nginx ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ubuntu ์ด๋ฏธ์ง๋ฅผ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ก ์ฌ์ฉํ์ฌ nginx๊ฐ ๋ํด์ง
- web app ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ๋ ์ด๋ฏธ ๋ง๋ค์ด์ง nginx ๋ฒ ์ด์ค ์ด๋ฏธ์ง์ web app์ ์ฌ๋ ค์ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ฆ
๋ฐ๋ผ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ์๋ก ๋ฐ์ง ์๊ณ ํด๋น ๋ ์ด์ด๋ง ๋ฐ๋ ๊ฒ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
Docker Hub & Docker Registry
Docker Hub
์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํด์ค๋๋ค.
์์ ๊ทธ๋ฆผ์์ ์ ์ ์๋ฏ์ด ์ด๋ฏธ ๋ง์ ํ์ฌ๋ค์ด Docker๋ก ์ํํธ์จ์ด๋ฅผ ๋ฐฐํฌํ๊ณ ์์ด ๊ณต๊ฐ ์ด๋ฏธ์ง๋ค์ ๊ณต์ ํ ์ ์์ต๋๋ค. Docker Hub๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ฌํ ๊ณต๊ฐ ์ด๋ฏธ์ง๋ค์ ์์ฝ๊ฒ pull ๋ฐ์ ์ปจํ ์ด๋์ ์ ์ฉ ์ํฌ ์ ์์ต๋๋ค.
Docker Registry
Docker Hub์ฒ๋ผ ๊ณต๊ฐ๋ ๋ฐฉ์์ด ์๋ ๋น๊ณต๊ฐ์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ์ ์ฅ์๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Docker Architecture
Docker Container Lifcycle
[์ฐธ๊ณ ]
https://aws.amazon.com/ko/docker/
https://hanamon.kr/%EB%8F%84%EC%BB%A4%EB%9E%80-docker-%ED%95%84%EC%9A%94%EC%84%B1/
https://khj93.tistory.com/entry/Docker-Docker-%EA%B0%9C%EB%85%90