๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด Docker๋ผ๋ ๋จ์ด๋ฅผ ๋ง์ด ๋ฃ๊ณ ์ฐ๊ฒ ๋๋๋ฐ, ๋๊ตฐ๊ฐ ๋ํํ ๋์ปค๊ฐ ๋ญ๋๊ณ ๋ฌผ์ด๋ณด๋ฉด ๋ช ํํ๊ฒ ๋๋ตํด ์ค ์์ ์ด ์์ด์ ์ ๋ฆฌํด๋ณด๋ ๊ธ๐คญ
๋๋ ๋์ปค์ ์ปจํ
์ด๋๊ฐ ๊ฐ์ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํด์ ๋์ปค = ์ปจํ
์ด๋๋ผ๊ณ ์๊ฐํด์๋ค.
ํ์ง๋ง ์ด๊ฑด VM = Vmware๋ผ๋ ๋ง์ฒ๋ผ ํ๋ฆฐ ๋ง์ด๋ค.
์ ํํ๊ฒ ๋งํ์๋ฉด ์ปจํ
์ด๋ ๊ธฐ์ ์ ์ด์ฉํ์ฌ ๊ฐ์ํํ์ง ์๊ณ ๊ฒฉ๋ฆฌํด์ ์คํ์ํค๋ ๊ธฐ์ ์ด๋ค.
Docker๋ Linux ์ปจํ
์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ์ด๋ค.
์ฆ, ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ๋น๋, ๊ณต์ ๋ฐ ์คํ์ ํ ์ ์๋๋ก ํด์ค๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ฐ๋ฐํ๊ฒฝ์ ์ฝ๊ฒ ์ธํ
ํ ์ ์๊ณ ๊ทธ๋ฌ๋ฉด์ ์ปดํจํฐ์ ์์์ ๊ธฐ์กด์ ๊ฐ์๋จธ์ ๊ธฐ๋ฐ์ผ๋ก ์ธํ
ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ ๊ฒ ์ฐจ์งํ ์ ์๋ ๋ฆฌ๋
์ค์ ์ปจํ
์ด๋ ๊ธฐ์ ์ ์ด์ฉํด์ ๊ฐ์ํ ํ์ง ์๊ณ ํ๋ก์ธ์ค๋ง ๊ฒฉ๋ฆฌํด์ ๋น ๋ฅด๊ฒ ์คํ์ํค๋ ๊ธฐ์ ์ด๋ค.
์๋ก ์ด์์ฒด์ ๋ฅผ ์ด์์ฒด์ ์์ ์ด์์ฒด์ ๋ฅผ ์๋ก ๊น์์ ๋
๋ฆฝ์ ์ธ ํ๊ฒฝ์ ์ธํ
ํ๋ ๊ฒ์ด ์๋๊ณ
๊ธฐ์กด์ ์ด์์ฒด์ ์์์ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌ์ํค๋ ๊ธฐ์ ์ ์ด์ฉํด์ ๋ง์น VM์ ์ค์นํ ๊ฒ๊ณผ ๋น์ทํ ํจ๊ณผ๋ฅผ ๋ธ๋ค.
์ฅ์ : VM์ ์ฌ์ฉํ๋ฉด OS๋ฅผ ํต์ฑ๋ก ์ค์นํ๊ฒ ๋๋๊น ์ฉ๋์ ์์ฒญ ์ฐจ์งํ๊ณ ๋๋ฆฐ๋ฐ ๋์ปค๋ ํ๋ก์ธ์ค๋ฅผ ๊ฒฉ๋ฆฌ๋ง ํ ๋ฟ OS๋ฅผ ์์์ ๋์ฐ์ง ์๊ณ ๊ธฐ์กด์ ์๋ ์์คํ
์์์ ๊ณต์ ํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฉ๋์ ์ ๊ฒ ์ฐจ์งํ๊ณ ๋น ๋ฆ (๊ฐ์๋จธ์ ํจ๊ณผ๋ฅผ ๋ผ ์๋ ์์ง๋ง ๊ฐ์๋จธ์ ์ ์๋๊ณ ๋ฆฌ์ผ๋จธ์ ์์ ๋)
์ปจํ
์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๋ฐ์ด๋๋ฆฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ ๋ชจ๋ ์ข
์์ฑ์ ํจํค์ง๋ก ๋ฌถ์ด ์๋ก ๋ค๋ฅธ ์ปดํจํ
ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ์คํ๋ ์ ์๋ ์ํํธ์จ์ด์ ํ์ค ๋จ์์ด๋ค.
์ฆ, ๊ฐ๋ฐ์๊ฐ ๋ก์ปฌ ํ๊ฒฝ์์ ๋ง๋ ์ฑ์ ๊ฒฉ๋ฆฌ์์ผ ๋ก์ปฌ ํ๊ฒฝ ๋ฟ ์๋๋ผ ์ด๋ ํ๊ฒฝ์์๋ ์คํํ ์ ์๋๋ก ํ๋ ๊ฒ์ผ๋ก ํ๋ก์ธ์ค๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ ๋ฐํ์์ ์ปจํ
์ด๋๊ฐ ๋๋๋ฐ, Docker ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ Docker Engine์์ ์คํ๋ ๋ ์ปจํ
์ด๋๊ฐ ๋๋ค. ์ฆ, ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ๊ฐ ์ปจํ
์ด๋์ด๋ค.
์ปจํ
์ด๋๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ฒ ๋๋ค.
1. ์ด๋ฏธ์ง ๋ค์ด๋ก๋
2. ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ฒ๋ค๋ก ์์ถ ํด์
3. ๋ฒ๋ค์์ ์ด๋ฏธ์ง Run
๋์ปค์์ ์ปจํ
์ด๋์ ํจ๊ป ๊ฐ์ฅ ์ค์ํ ๊ฐ๋
์ธ ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ ์ฝ๋, ๋ฐํ์, ์์คํ
๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ค์ ๋ฑ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ค์นํ ๋ค ํ์ผ๋ก ๋ง๋๋ ๊ฒ์ผ๋ก ์คํ ํ์ผ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
์ฆ, ์ปจํ
์ด๋๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์ฝ๊ธฐ ์ ์ฉ ํ
ํ๋ฆฟ์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
Docker ์ปจํ
์ด๋ ์ด๋ฏธ์ง๋ Docker hub์ ๋ฑ๋กํ๊ฑฐ๋ Docker Registry ์ ์ฅ์๋ฅผ ์ง์ ๋ง๋ค์ด ๊ด๋ฆฌํ ์ ์๋ค.
์ฐธ๊ณ ๋ก ์ปจํ
์ด๋ ์ด๋ฏธ์ง ํ๋๋ก ์ฌ๋ฌ๊ฐ์ ์ปจํ
์ด๋๋ฅผ ์คํํ ์ ์๋ค.
Dockerfile์ Docker ์ด๋ฏธ์ง ์ค์ ํ์ผ๋ก Dockerfile์ ์ค์ ๋ ๋ด์ฉ๋๋ก ์ด๋ฏธ์ง๋ฅผ ์ค์ ํ๊ฒ ๋๋ค.
Dockerfile์์ ์์ฃผ ์ฐ์ด๋ ๋ช
๋ น์ด ๋ช ๊ฐ์ง๋ฅผ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
FROM
์ด๋ค ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ง ์ค์ ํ๋ ๊ณณ์ผ๋ก ๊ธฐ์กด์ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๋ค.
WORKDIR
์์
๋๋ ํ ๋ฆฌ ์ ํ์ ์ํด ์ฌ์ฉ๋๋ค. ์ด ๋ช
๋ น๋ฌธ์ผ๋ก ๋๋ ํ ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ์ดํ์ ๋ฑ์ฅํ๋ ๋ชจ๋ RUN, CMD, COPY, ADD ๋ฑ์ ๋ช
๋ น๋ฌธ์ ํด๋น ๋๋ ํ ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋๋ค.
RUN
Shell ์คํฌ๋ฆฝํธ ํน์ ๋ช
๋ น์ ์คํํ๋ค. ์ด ๋ช
๋ น์ด๋ก ๊ฑฐ์ ๋ชจ๋ ์์
์ ํ ์ ์์ง๋ง ์ฃผ๋ก ์ด๋ฏธ์ง ์์ ํน์ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
CMD
์ปจํ
์ด๋๊ฐ ์์๋์์ ๋ ๋ํดํธ๋ก ์คํํ ์คํํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ์ด๋ค.
EXPOSE
๋คํธ์ํฌ ์์์ ์ปจํ
์ด๋๋ก ๋ค์ด์ค๋ ํธ๋ํฝ์ ๋ฆฌ์ค๋ํ๋ ํฌํธ์ ํ๋กํ ์ฝ์ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํ๋กํ ์ฝ์ TCP์ UDP๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๋ง์ฝ ํ๋กํ ์ฝ์ ์ง์ ํ์ง ์์ผ๋ฉด TCP๋ก ์๋ ์ง์ ๋๋ค.
COPY
ํธ์คํธ ์ปดํจํฐ์ ์๋ ๋๋ ํ ๋ฆฌ๋ ํ์ผ์ Docker ์ด๋ฏธ์ง ํ์ผ ์์คํ
์ผ๋ก ๋ณต์ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ฃผ์ํ ์ ์ ์์ถ ํ์ผ ์ฌ์ฉ ์ ์์ถ์ ํด์ ํ์ง ์๊ณ ๊ทธ๋๋ก ๋ณต์ฌํ๋ฉฐ, ํ์ผ URL๋ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฏธ์ง์์ ํ์ผ์ด ์์นํ ๊ฒฝ๋ก ๋ง์ง๋ง์ด /๋ก ๋๋๋ฉด ๋๋ ํ ๋ฆฌ๊ฐ ์์ฑ๋๊ณ ํด๋น ํ์ผ์ ๊ทธ ์๋์ ๋ณต์ฌ๋๋ค.
ADD
COPY์ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ผ์ ์ด๋ฏธ์ง์ ๋ณต์ฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
์ฐจ์ด์ ์ COPY์์ ๋ถ๊ฐ๋ฅํ๋ ์์ถ ํ์ผ, ํ์ผ URL ๋ชจ๋ ์ฌ์ฉํ ์ ์๋ค.
ENV
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ RUN, CMD, ENTRYPOINT์ ์ ์ฉ๋๋ค.
๊ตฌ๊ธ๋ง ํ๋ค๊ฐ ์ดํด๋ฅผ ๋์ธ ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ช ๊ฐ GET! ๊ตฌ๊ธ๋ง ์ต๊ณ ๐
๊ฐ๋
์ ์ด์ ๋๋ก ์ ๋ฆฌํ๊ณ ๋ค์๋ฒ์๋ ๋์ปค ์ค์น ๊ด๋ จ ๋ด์ฉ์ ์ ๋ฆฌํด๋ด์ผ์ง๐
๐ณ Docker ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ํ workflow
- ์ฝ๋ ๊ฐ๋ฐ ๋ฐ ์ด๊ธฐ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์๋น์ค ๊ธฐ์ค ์์ฑ
- ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํ Dockerfile ์์ฑ (DSL Domain-Specific Language ์ธ์ด ์ฌ์ฉ)
- ์ฌ์ฉ์ ์ง์ Dockerfile ์ด๋ฏธ์ง ์์ฑ (+์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์๋น์ค ํฌํจ)
- (opt) ๋ค์ค ์ปจํ ์ด๋ Docker ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ์ docker-compose.yml์์ ์๋น์ค ์ ์
- Docker ์ ํ๋ฆฌ์ผ์ด์ ๋น๋ ๋ฐ ์คํ
- ๋ก์ปฌ Docker ํธ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ Docker ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
๐ณ Docker Architecture
๐ ์ฐธ์กฐ: https://nordicapis.com/api-driven-devops-spotlight-on-docker/
๐ณ Docker ์ปจํ ์ด๋์ VM ๋น๊ต
๐ ์ฐธ์กฐ: https://www.docker.com/resources/what-container