4. ์ด๋ฏธ์ง๋น๋
์ด๋ฏธ์ง๋น๋๋?
์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ์ ์ฅ๋๋์ง, ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๋ ๋ ์ด์ด๋ ๊ตฌ์กฐ
์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ: ์ปค๋ฐ, ๋น๋
- ๋น๋๋ฅผ ํ๊ธฐ ์ํด์ ๋์ปค ํ์ผ์ด๋ผ๋ ๋ช ์ธ์ ์์ฑ
- ๋ ํจ์จ์ ์ธ ์ด๋ฏธ์ง ๋น๋ ๋ฐฉ์: ๋ฉํฐ ์คํ ์ด์ง ๋ฐฉ์
1. ์ด๋ฏธ์ง์ ๋ ์ด์ด
์ด๋ฏธ์ง๋ ์ปจํ ์ด๋ ์คํ ์ํ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ์ด๋ฉฐ, ๋์ปค ์ด๋ฏธ์ง๋ ๋ ์ด์ด๋ ํ์ผ ์์คํ ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ ์ด์ด๋ ์ฌ๋ฌ๊ฐ์ ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒ ์ค ํ๋์ ์ธต์ผ๋ก, ๋ ์ด์ด๋ ๊ตฌ์กฐ๋ ์ฌ์ฌ์ฉํ๊ธฐ ์ข์ ๊ตฌ์กฐ์ด๋ค.
์ด ๋ ์ด์ด๋ค์ด ๋ชจ์ฌ์ ํ๋์ ์ด๋ฏธ์ง๋ก ๊ตฌ์ฑ๋๋ ๊ฒ์ด๋ค. ์ฆ, ๊ฐ ๋ ์ด์ด๋ ์ด๋ฏธ์ง์ ์ผ๋ถ๋ถ์ด๋ค.
- ์ ํ๋์ ์ด๋ฏธ์ง๋ฅผ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๊ตฌ์ฑํ ๊น?
- -> ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ด ์ด๋ฏธ์ง ์ ์ฅ&์ ์ก ์ ์คํ ๋ฆฌ์ง์ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ ์ฝํ ์ ์๋ค.
๊ฑด์ถ๋๋ฉด์ ์๊ฐํ์
ํฌ๋ช ํ ๋๋ฉด์ ์ฌ๋ฌ ์ฅ ์ค๋นํ์ฌ ๊ฐ ์ฃผ์ ๋ณ๋ก ํ์ฅ์ฉ ๊ทธ๋ ค ์ด ์ฉ์ง๋ค์ ํฉ์น๋ฉด ํ๋์ ๊ฑด๋ฌผ์ ๋ํ ์ค๊ณ๋๊ฐ ์์ฑ๋๋ค.
์ ๊ธฐ ๋ถ๋ถ์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ค๋ฉด ์ฌํ์ฉ์ด ์ ๋ฆฌํ ๊ตฌ์กฐ์ด๋ค. ๋๋ฉด ์ ์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ์๋๋ผ ์ ๊ธฐ ๊ด๋ จ ๋๋ฉด๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
๋ํ ์ค๊ณ๋ A์ B๊ฐ ์ ๊ธฐ ๋ถ๋ถ๋ง ๋ค๋ฅด๋ค๊ณ ํ์์ ๋, ๊ฒน์น๋ ๋๋จธ์ง ๋ ์ด์ด๋ ์ฌ์ฌ์ฉํ ์ ์๋ค.
์ฆ, ๋ ์ด์ด๋ ๊ตฌ์กฐ์ด๋ฉด ๋๋จธ์ง ๊ฒน์น๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด๋ ์ง์ ๋จ๊ณ ๋ ์ด์ด์ ๋ณ๊ฒฝ ์ฌํญ๋ง ์ ์ฅ๋๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์๋ฒ์ ๊ฐ๋จํ ํ์ด์ง๋ฅผ ์ถ๋ ฅํ๋ Nginx๋ฅผ ์ค์นํ๋ค๊ณ ์๊ฐํด๋ณด์.
๋จผ์ OS๋ฅผ ์ค์นํ๊ณ Nginx ์ํํธ์จ์ด๋ฅผ ์ค์นํ๋ค. ์ด๋, OS์ ํน์ ํด๋์ Nginx ์ํํธ์จ์ด ๊ด๋ จ๋ ํ์ผ๋ค์ด ์ถ๊ฐ๋๊ณ ์ด๋ ๊ฒ ๊ธฐ์กด ๋ ์ด์ด์์ ๋ณ๊ฒฝ๋๋ ๊ฒ๋ค์ ๊ธฐ์กด ๋ ์ด์ด๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด ๋ ์ด์ด ์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ๋ค์ด ์๋ก์ด ๋ ์ด์ด๋ก ์ ์ฅ๋๋ค.
๊ทธ๋์ ๊ธฐ์กด OS ํ์ผ์์คํ ์ Nginx์ํํธ์จ์ด๊ฐ ์ถ๊ฐ๋ ๋ถ๋ถ๋ง ๋ฐ๋ก ๊ฐ์ง๊ณ ์๊ณ , ์ด์ ๋ ์ด์ด์ ๋น๊ตํด์ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๋ค์ ๋ ์ด์ด๋ก ์ ์ฅ๋๋ค.
์ด๋ฏธ์ง์์ ํ ๋ฒ ์ ์ฅ๋ ๋ ์ด์ด๋ ๋ณ๊ฒฝ๋ถ๊ฐ, ๋ณ๊ฒฝ์ฌํญ ์์ ์ ์๋ก์ด ๋ ์ด์ด๋ก ์ ์ฅํด์ผ ํ๋ค.
- ์ด๋ฒ์๋ index.html๊น์ง ์ด๋ฏธ์ง A๋ฅผ ์์ฑ ํ์๋๋ฐ, ์ด๋ฏธ์ง B๋ฅผ ์๋ก๋ง๋ ๋ค๊ณ ํด๋ณด์, ์ ์ฒด ๊ณผ์ ์ ๋๊ฐ๊ณ , ๋ง์ง๋ง ๋จ๊ณ์์ index.html์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๋ค.
- ์ด๋ ๊ทธ์ ๋จ๊ณ๊น์ง๋ ๋์ผํ๊ฒ ์ค์ ํ๋ฉด ๊ฐ์ ๋ ์ด์ด๋ฅผ ์ฌ์ฌ์ฉํ๊ฒ ๋๋ค.
- ๋ง์ง๋ง index.html ๋ ์ด์ด๋ง ์๋กญ๊ฒ ์ถ๊ฐํ์ฌ ์ด๋ฏธ์ง B๊ฐ ์์ฑ๋๋ค.
์ ๋ฆฌํ๋ฉด ์ด๋ฏธ์ง ๋ ์ด์ด๋ ์์ฐจ์ ์ผ๋ก ์์ด๊ณ , ๊ฐ ๋ ์ด์ด๋ ์ด์ ๋ ์ด์ด์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ์ ์ฅํ๊ณ ์๋ค.
๊ฐ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋ ์ด์ด๋ ๊ณต์ ํด์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด๋ ์ด์ ํ์ผ์์ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์ ์ฅํ๊ธฐ์ ๊ตฌ์ฑ ์์๊ฐ ๋ค๋ฅด๋ฉด ์์ ํ ๋ค๋ฅธ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๋ ๊ฒ์ด๋ค.
Docker run ๋ช ๋ น์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๋ฉด ์ด๋ฏธ์ง์ ๊ฐ์ฅ ๋ง์ง๋ง ๋ ์ด์ด ์์์ ์๋ก์ด ์ฝ๊ธฐ/์ฐ๊ธฐ ๊ฐ๋ฅ ๋ ์ด์ด๊ฐ ์ถ๊ฐ๋๋ค. ์ด ์ถ๊ฐ๋ ๋ ์ด์ด๊ฐ ์ปจํ ์ด๋ ๋ ์ด์ด์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ก๊ทธ๊ฐ ์์ด๊ฑฐ๋ ์ปจํ ์ด๋๊ฐ ์คํ ์ค์ ์๊ธฐ๋ ๋ชจ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์ด ์๋ก์ด ๋ ์ด์ด์ ์ ์ฅ๋๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด์ ์ปจํ ์ด๋ ๋ ์ด์ด์ ์ญํ ์ ์์ ํ ๋ค๋ฅด๋ค.
- ์ด๋ฏธ์ง ๋ ์ด์ด(์ฝ๊ธฐ์ ์ฉ): ์ปจํ ์ด๋๋ฅผ ์คํํ๊ธฐ ์ํ save point ์ญํ
- ์ปจํ ์ด๋ ๋ ์ด์ด(์ฝ๊ธฐ, ์ฐ๊ธฐ): ์ค์ ๋ก ์ด ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ์คํํ ๋ค์์ ํ๋ก์ธ์ค๊ฐ ๋ณ๊ฒฝํ๋ ๋ด์ฉ์ ๊ธฐ๋กํ๋ ๋ ์ด์ด
์ปจํ ์ด๋ ๋ ์ด์ด ํ์ฅ์ด ์ด๋ฏธ์ง ๋ ์ด์ด ์๋จ์ ์ถ๊ฐ๋์ด ์ปจํ ์ด๋ ์คํ ์ค์ ๋ณ๊ฒฝ๋๋ ๋ด์ฉ๋ง ๊ธฐ๋กํ๋ค. ์ด๋ฏธ์ง A๋ก ๋๋ฒ์งธ ์ปจํ ์ด๋์ธ ์ปจํ ์ด๋2๋ฅผ ์คํํ๋ฉด ์ปจํ ์ด๋2์ ์ฝ๊ธฐ ์ฐ๊ธฐ ๋ ์ด์ด๊ฐ ์์ฑ๋๋ค.
Container1, 2๋ ์ด๋ฏธ์ง๊ฐ ๊ฐ๊ธฐ์ ๋์ผํ ์ฝ๊ธฐ ์ ์ฉ ๋ ์ด์ด๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์ปจํ ์ด๋ ์คํ ์ ์ ์ฒด ๋ ์ด์ด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฏธ์ง ์์ ์๋ก์ด ์ปจํ ์ด๋ ๋ ์ด์ด๋ง ํ๋์ฉ ์ถ๊ฐ
์ ๋ฆฌํ๋ฉด ๋ชจ๋ ์ปจํ ์ด๋๋ ๊ฐ์ ์๊ธฐ๋ง์ ์ฝ๊ธฐ ์ฐ๊ธฐ ๋ ์ด์ด ํ์ฅ์ ๊ฐ์ง๊ณ , ์ปจํ ์ด๋ ๋ง๋ค ๋ ์ฌ์ฉ๋ ์ด๋ฏธ์ง์ ๋ฐ๋ผ ์ด๋ฏธ์ง์ ์ฝ๊ธฐ ์ ์ฉ ๋ ์ด์ด ์ ์ฒด or ์ผ๋ถ๋ฅผ ๊ณต์ ํ ์ ์๋ค.
์ฅ์ : ์ด๋ฏธ์ง์ ์ฝ๊ธฐ ์ ์ฉ ๋ ์ด์ด๋ฅผ ํ์ฉํ๋ฉด ์ปจํ ์ด๋ ์คํ ์ ์ ์ฒด ๊ณต๊ฐ ๋ณต์ฌํ์ง ์์๋ ๋๊ธฐ์ ์ปจํ ์ด๋ ๋น ๋ฅด๊ฒ ์คํํ๊ณ , ์ปจํ ์ด๋๊ฐ ๋์ด๋๋ฉด์ ์ฌ์ฉํ๋ ๊ณต๊ฐ์ ์๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
์ด๋ฏธ์ง ๋ ์ด์ด๋ ์ด์ ํ์ผ์ ์ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์ ์ฅํ๊ธฐ์ ๊ตฌ์ฑ ์์๊ฐ ๋ค๋ฅด๋ฉด ์์ ํ ๋ค๋ฅธ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋๋ ๊ฒ์ด๋ค.
- ๋ ์ด์ด๋ง: ๊ฐ ๋ ์ด์ด๋ ์ด์ ๋ ์ด์ด ์์ ์์ด๋ฉฐ, ์ฌ๋ฌ ์ด๋ฏธ์ง ๊ฐ ๊ณต์ ๋ ์ ์๋ค. ๋ ์ด์ด ๋ฐฉ์์ ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ต์ํํ๊ณ , ๋น๋ ์๋๋ฅผ ๋์ด๋ฉฐ, ์ ์ฅ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- Copy-on-Write: ๋ค์ ๋ ์ด์ด์์ ์ด์ ๋ ์ด์ด ์์ ์, ํด๋น ํ์ผ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉ, ๋ณ๊ฒฝ๋ ๋ชจ๋ ๊ฒ๋ค์ ์ปจํ ์ด๋ ๋ ์ด์ด์ ์ ์ฅ๋จ. ์ด๋ฏธ์ง ๋ ์ด์ด๋ฅผ copyํด์, ์ปจํ ์ด๋ ๋ ์ด์ด์์ writeํจ
- ๋ถ๋ณ ๋ ์ด์ด: ์ด๋ฏธ์ง์ ๊ฐ ๋ ์ด์ด๋ ๋ถ๋ณ -> ์ด๋ฏธ์ง์ ์ผ๊ด์ฑ ์ ์ง
- ์บ์ฑ: ๋ ์ด์ด ์บ์๋ฅผ ํตํด, ์ด๋ฏธ ๋น๋๋ ๋ ์ด์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
2. ์ด๋ฏธ์ง ์ปค๋ฐ
์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ 2๊ฐ์ง ๋ฐฉ์
- ์ปค๋ฐ: ํ์ฌ ์ปจํ ์ด๋์ ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์ปค๋ฐํ์ฌ ์ด๋ฏธ์ง๋ก ์ ์ฅ
- ๋น๋: Dockerfile์ ์ด์ฉํด ์ฌ๋ฌ ๋จ๊ณ์ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ์ปค๋ฐํ๋ฉด์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ์
์ปค๋ฐ์ ํตํด ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ด๋ฏธ์ง๋ก ์ ์ฅ, ๋น๋ ๋ํ ์ปค๋ฐ์ ์์ฉํ ๋ฐฉ์
์ง๊ธ๊น์ง๋ ์ด๋ฏธ์ง์์ ์ปจํ ์ด๋๋ก ์คํ๋ง ํ๊ณ , ์ด๋ฒ์๋ ์ปค๋ฐ์ผ๋ก ์ปจํ ์ด๋์ ์ํ๋ฅผ ์ด๋ฏธ์ง๋ก ์ ์ฅ
docker commit <์ปจํ
์ด๋_ID> <์๋ก์ด_์ด๋ฏธ์ง์ด๋ฆ>:<ํ๊ทธ>
# ์ปจํ
์ด๋ ์คํ๊ณผ ๋์์ ํฐ๋ฏธ๋ ์ ์, ์ด๋ฏธ์ง ๋ด๋ถ์ ํ์ผ ์์คํ
์ ํ์ธํ๊ฑฐ๋ ๋๋ฒ๊น
ํ๋ ์ฉ๋
docker run -it --name my_container ubuntu bin/bash
# ์คํ ์ค์ธ ์ปจํ
์ด๋๋ฅผ ์ด๋ฏธ์ง๋ก ์์ฑ
docker commit -m "ํจํค์ง ์
๋ฐ์ดํธ ์๋ฃ" my_container my_custom_image:v1
3. ์ด๋ฏธ์ง ๋น๋
IaC: ์ธํ๋ผ๋ฅผ ์ฝ๋๋ฅผ ํตํด์ ๊ด๋ฆฌ
์ด๋ฏธ์ง ๋น๋: IaC ๋ฐฉ๋ฒ์ ํ์ฉํ์ฌ ์ฝ๋๋ก ์ด๋ฏธ์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์
์ฌ๋์ด ์ง์ ์ธํ๋ผ๋ฅผ ์ปจํธ๋กค -> ์ค์ ๊ฐ๋ฅ -> DOckerfile์ด๋ผ๋ ์์ค์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธํ๋ผ ์ํ๋ฅผ ์ ์ฅํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ
- ์ปค๋ฐ์ ๊ฒฝ์ฐ
- ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค ๋๋ง๋ค ์ปจํ ์ด๋๋ฅผ ์คํํด์ผ ๋๊ณ ์ฌ์ฉ์๊ฐ ๋ช ๋ น์ด๋ฅผ ์ง์ ์ ๋ ฅ, ์ปค๋ฐ ํ๋๋น ์ด๋ฏธ์ง์ ๋ ์ด์ด๊ฐ ํ๋๊ฐ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๋๋ ์ฌ๋ฌ ๋ฒ์ ์ปค๋ฐ์ด ํ์
- ๋น๋์ ๊ฒฝ์ฐ
- ์ด๋ฏธ์ง ์ ์์๊ฐ ๋์ปค๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ๋ฒ์ ๋ฐ๋ผ์ ๋์ปค ํ์ผ์ ์์ฑํ๋ฉด ๋์ปค๋ ์์๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ๊ณ ์ฌ์ฉ์๊ฐ ์ ์ํ ์์ ์ ์ํํ ๋ค์ ์ปค๋ฐ์ ์คํ. -> ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ ์ฝ๊ฒ ์ถ๊ฐ๊ฐ๋ฅ
๋น๋๋ฅผ ํตํด ๋ ์ด์ด๋ฅผ ํ ์ฅ ์ถ๊ฐํ ๋ค์์ ๋ค์ ๊ทธ ๋ ์ด์ด๋ก ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ๋ง๋ค๊ณ ๊ทธ ์ปจํ ์ด๋ ์์์ ๋ณ๊ฒฝ ์์ ์ ํ ๋ค์์ ์ถ๊ฐ๋ก ์ปค๋ฐํ๋ ๊ฒ์ ๋์ปค๊ฐ ์์์ ๋ฐ๋ณต
docker build -t ์ด๋ฏธ์ง๋ช
Dockerfile๊ฒฝ๋ก : ๋์ปคํ์ผ์ ํตํด ์ด๋ฏธ์ง ๋น๋
# Dockerfile
FROM ์ด๋ฏธ์ง๋ช
: ๋ฒ ์ด์ค ์ด๋ฏธ์ง(์์์ )๋ฅผ ์ง์
COPY ํ์ผ๊ฒฝ๋ก ๋ณต์ฌํ ๊ฒฝ๋ก : ํ์ผ์ ๋ ์ด์ด์ ๋ณต์ฌ
CMD ["๋ช
๋ น์ด"] : ์ปจํ
์ด๋ ์คํ ์ ๋ช
๋ น์ด ์ง์
FROM nginx:1.23
COPY index.html /usr/share/nginx/html/index.html
CMD ["nginx", "-g", "daemon off;"]
# 1. ํ์ฌ ๊ฒฝ๋ก์์ Dockerfile ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฏธ์ง ๋น๋
docker build -t ๋ ์ง์คํธ๋ฆฌ๊ณ์ ๋ช
/buildnginx .
# 2. ์ปจํ
์ด๋ ์คํ
docker run -d -p 80:80 --name build-nginx ๋ ์ง์คํธ๋ฆฌ๊ณ์ ๋ช
/buildnginx
์ ๋ฆฌํ๋ฉด ๋์ปค๋ IaC ๋ฐฉ์์ ๋ฐ๋ผ์ ์ด๋ฏธ์ง๋ฅผ ๋์ปค ํ์ผ์ด๋ผ๋ ์์ค ์ฝ๋๋ก ๊ด๋ฆฌํ๊ณ ์ด๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋์๋ ํจ๊ป ๊ด๋ฆฌํ ์ ์๊ณ ๋ฒ์ ๊ด๋ฆฌ ๊ฐ๋ฅ , ๋์ปค ํ์ผ์๋ ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ๋ง๋๋์ง์ ๋ํ ๋ด์ฉ์์ด์ ๋์ปค๊ฐ ์ด๋ฅผ ํด์ํด์ ์ด๋ฏธ์ง ์ ์ํ๋ค.
์ปค๋ฐ์ ์ฌ์ฉ์๊ฐ ์ง์ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ, ๋น๋๋ ๋์ปค ๋ฐ๋ชฌ์ด ๋์ปค ํ์ผ์ ์ ํ ์ง์์ด๋ฅผ ์ฌ์ฉํด์ ์ด๋ฏธ์ง๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ๋ฐฉ๋ฒ
ํ๋์ ์ปค๋ฐ์ ๊ธฐ์กด ๋ ์ด์ด์ ์๋ก์ด ๋ ์ด์ด๋ฅผ ์ถ๊ฐํ๊ธฐ์, ์ปค๋ฐ ์๋ฃํ ์ด๋ฏธ์ง๋ฅผ ์๋ก์ด ์ปจํ ์ด๋๋ก ๋ง๋ค๊ณ ๋ค์ ์ปค๋ฐ์ ํด์ผํ์ง๋ง, ๋์ปคํ์ผ๋ก ์ด ์์ ๋ค์ ์๋์ผ๋ก ํด๊ฒฐ ๊ฐ๋ฅ
๋น๋ ์ปจํ ์คํธ
๋น๋ ์ปจํ ์คํธ๋?
- ๋์ปค ์ด๋ฏธ์ง ๋น๋์ ํ์ํ ํ์ผ๊ณผ Dockerfile์ด ํฌํจ๋ ํด๋
- docker build ์คํ ์, ํด๋น ํด๋ ์ ์ฒด๊ฐ Docker ๋ฐ๋ชฌ์ ์ ๋ฌ๋จ
- ์ผ๋ฐ์ ์ผ๋ก . (ํ์ฌ ๋๋ ํ ๋ฆฌ)๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์ปจํ ์คํธ ์ง์
docker build -t my-image .
โก๏ธ ํ์ฌ ํด๋(.)๋ฅผ ๋น๋ ์ปจํ ์คํธ๋ก ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋น๋
.dockerignore ํ์ผ์ด๋?
- ๋น๋ ์ปจํ ์คํธ์์ ์ ์ธํ ํ์ผ ๋ฐ ํด๋๋ฅผ ์ง์
- ๋ถํ์ํ ํ์ผ์ ์ ์ธํ์ฌ ๋น๋ ์๋๋ฅผ ์ต์ ํํ๊ณ , ์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ํ ๊ฐ๋ฅ
๋น๋ ์ปจํ ์คํธ๋ฅผ ์ ์ ํ ๊ด๋ฆฌํ๋ ์ด์
- โ ๋น๋ ์๋ ์ต์ ํ → ๋ถํ์ํ ํ์ผ์ ์ ์ธํ๋ฉด Docker ๋ฐ๋ชฌ์ ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๊ฐ ์ค์ด๋ค์ด ๋น๋ ์๊ฐ์ด ๋จ์ถ๋จ
- โ ์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ํ → ๋ถํ์ํ ํ์ผ์ด ํฌํจ๋์ง ์์ ๋ถํ์ํ ๋ ์ด์ด๊ฐ ์์ฑ๋์ง ์์
- โ ๋ณด์ ๊ฐํ → .git, .env ๋ฑ ๋ฏผ๊ฐํ ํ์ผ์ด ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์๋๋ก ๋ฐฉ์ง
๋ฉํฐ์คํ ์ด์ง ๋น๋
- ์ ์: ๋์ปค ํ์ผ์์ ์ฌ๋ฌ ๊ฐ์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ ์คํ ๋จ๊ณ๋ฅผ ๋๋๋ ๋ฐฉ๋ฒ
- ๋ชฉํ: ์ด๋ฏธ์ง ๋น๋์ ์คํ์ ๋ถ๋ฆฌํ์ฌ, ๋ถํ์ํ ๋น๋ ํ๊ฒฝ์ ์ต์ข ์ด๋ฏธ์ง์ ํฌํจํ์ง ์๊ณ ์ต์ํ๋ ์คํ ํ๊ฒฝ๋ง์ ํฌํจํ๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ
- ์ฅ์
- ์ด๋ฏธ์ง ํฌ๊ธฐ ์ต์ ํ: ๋น๋ ํ๊ฒฝ์ ํฌํจํ์ง ์๊ธฐ ๋๋ฌธ์ ์ต์ข ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ์์์ง
- ๋ถํ์ํ ํ์ผ ์ ์ธ: ๋น๋ ๋๊ตฌ์ ํ๊ฒฝ์ด ์ต์ข ์ด๋ฏธ์ง์์ ์ ์ธ๋๋ฏ๋ก ๋ณด์๊ณผ ์ฑ๋ฅ์ด ๊ฐ์ ๋จ
- ํจ์จ์ ์ธ ๋น๋: ๋น๋ ํ๊ฒฝ์ ์์๋ก ์ฌ์ฉ๋๋ฉฐ, ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ํ์ผ๋ง ํฌํจ๋๋ฏ๋ก ๋น๋์ ์คํ์ ๋ถ๋ฆฌ
๋ฉํฐ์คํ ์ด์ง ๋น๋ ๊ณผ์
- ๋น๋ ์คํ
์ด์ง (Build Stage)
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ๋ ๋ฐ ํ์ํ ํ๊ฒฝ ์ค๋น
- 2. ์คํ ์คํ
์ด์ง (Run Stage)
- ์ค์ ์คํ์ ํ์ํ ํ๊ฒฝ๋ง์ ์ค๋นํ๊ณ ๋น๋๋ ํ์ผ์ ์คํ
๋ฉํฐ์คํ ์ด์ง vs ์ฑ๊ธ ์คํ ์ด์ง
- ์ฑ๊ธ ์คํ
์ด์ง ๋น๋
- ํ๋์ ๋ฒ ์ด์ค ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋์ ์คํ์ ๋ชจ๋ ํฌํจ
- ๋น๋ ํ๊ฒฝ๊ณผ ์คํ ํ์ผ์ด ๋ชจ๋ ํฌํจ๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑ
- ๋ฉํฐ์คํ
์ด์ง ๋น๋
- ๋น๋ ์คํ ์ด์ง์ ์คํ ์คํ ์ด์ง๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ต์ข ์ด๋ฏธ์ง์์ ๋ถํ์ํ ๋น๋ ํ๊ฒฝ์ ์ ์ธ
- ์คํ ํ์ผ๋ง ํฌํจ๋ ์ต์ ํ๋ ์ด๋ฏธ์ง๊ฐ ์์ฑ