Docker ์ ์ฒด ํฌ์คํ
[Docker] (1) ๋์ปค ๊ฐ๋ ์ค๋ช | ๋์ปค๋ ์ ์ฌ์ฉํ๋ ๊ฑธ๊น?
[Docker] (2) ๋์ปค & ๋์ปค์ปดํฌ์ฆ ๋ค์ด๋ก๋
[Docker] (3) ๋์ปค ํต์ฌ ๊ฐ๋ - ์ด๋ฏธ์ง, ์ปจํ ์ด๋, ๋์ปค ํ๋ธ
[Docker] (5) ๋์ปค run ๋ช ๋ น์ด ์ต์ , ๋์ปค ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋์ง ์๊ฒ ํ๋ ๋ฐฉ๋ฒ
[Docker] (6) ๋์ปค ์ปจํ ์ด๋๋ก ์ ์ํ๊ธฐ - docker exec & docker attach
[Docker] (7) ๋์ปค volume(๋ณผ๋ฅจ) ์ต์ - ์ปจํ ์ด๋ ํด๋์ ํธ์คํธ ํด๋ ์ฐ๊ฒฐํ๊ธฐ
[Docker] (9) Dockerfile(๋์ปคํ์ผ) - ์ค๋งํธํ๊ฒ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐฉ๋ฒ
[Docker] (10) Dockerfile ๋น๋ ์์ | ENTRYPOINT ์ CMD์ ์ฐจ์ด
[Docker] (11) ๋์ปค ์ปจํ ์ด๋์ vscode ์ฐ๋ํ๊ธฐ | ๋์ปค ์ปจํ ์ด๋์์ ๊ฐ๋ฐ
[Docker] (12) ๊นํ๋ธ๋ก ๋์ปค ์ด๋ฏธ์ง ๊ณต์ ํ๊ธฐ | Packages Container Registry
๋์ปค์ ํต์ฌ ๊ฐ๋ ์ธ ์ด๋ฏธ์ง(Image)์ ์ปจํ ์ด๋(Container)์ ๋์ปค ํ๋ธ(Docker Hub)์ ๋ํด ์ ๋ฆฌํฉ๋๋ค.
๋์ปค์ ํต์ฌ ๊ฐ๋
Docker Image (๋์ปค ์ด๋ฏธ์ง)
๋์ปค ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ์ผ ์์คํ ๊ณผ ์คํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ค ์ฝ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํ๊ฒฝ ์ค์ ๋ฑ์ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ํ ํ๋ฆฟ์ด๋ค. ์ด๋ฏธ์ง๋ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋์ปค ์ปจํ ์ด๋๋ฅผ ์์ํ ๋ ํด๋น ์ด๋ฏธ์ง๊ฐ ๊ธฐ๋ฐ์ด ๋๋ค. ์ด๋ฏธ์ง๋ ์ฌ๋ฌ ๊ฐ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ๊ฐ ๋ ์ด์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ํ์ผ ๋๋ ์ค์ ์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ์ด๋ค ๋ ์ด์ด๋ ์์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ฌ ์ต์ข ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑํ๋ค. ์ด ๋ ์ด์ด ๊ตฌ์กฐ๋ก ์ธํด ์ด๋ฏธ์ง ๊ฐ์ ๊ณตํต๋ ๋ถ๋ถ์ ํจ์จ์ ์ผ๋ก ๊ณต์ ํ ์ ์๋ค.
์ด๋ฌํ ์ด๋ฏธ์ง๋ Dockerfile์ด๋ผ๋ ํ ์คํธ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ ์๋๋๋ฐ, Dockerfile์๋ ๊ธฐ๋ฐ ์ด๋ฏธ์ง, ์ถ๊ฐํ ํ์ผ, ์คํํ ๋ช ๋ น์ด, ํ๊ฒฝ ๋ณ์ ์ค์ ๋ฑ์ด ํฌํจ๋๋ค. ์ด๋ฏธ์ง๋ ๋์ปค ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ๋๊ฑฐ๋ ๊ณต์ ๋ ์ ์๋ค.
*๋ฌด์จ ๋ง์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด...
๋์ปค ์ด๋ฏธ์ง๋ ๊ฐ๋ฐ ํ๊ฒฝ ๋ณด๋ฐ๋ฆฌ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค. ์ด๋ค ์ด์์ฒด์ ์ ์ด๋ค ๊ฐ๋ฐํ๊ฒฝ์ด ์ธํ ๋์ด ์๊ณ , ์ด๋ค ๊ฐ๋ฐ์ ์ํด ์ด๋ค ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ํจ๊ป ๊ตฌ์ฑ๋ ์ด๋ฏธ์ง์ธ ๊ฒ์ด๋ค. ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐํ๊ณ ์ถ์ ๋ฌด์ธ๊ฐ๊ฐ ์์ ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ฉด ํน์ ๊ฐ๋ฐํ๊ฒฝ์ด ์ธํ ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๊ธฐ์ ์ํ๋ ๊ฐ๋ฐ์ ํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
๋ฐ๋๋ก ๋์ปค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์ด์์ฒด์ ์์ ์ํ๋ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ๋ํ๋๋ฅผ ์ค์นํด์ผ ํ๋ค. ๋ฌผ๋ก ๊ทธ ๊ณผ์ ์์์ ๋ฒ์ ๋ํ๋์ ๋๋ฌธ์ ๊ฐ์ข ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ค.
Docker Container (๋์ปค ์ปจํ ์ด๋)
๋์ปค ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ๊ฒฉ๋ฆฌ๋ ํ๋ก์ธ์ค ํ๊ฒฝ์ผ๋ก ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ฉด ์ปจํ ์ด๋๊ฐ ๋๋ค. ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋์ ํ์ผ ์์คํ ๊ณผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ๋ฑ์ ์ ๊ณตํ๋ฉฐ, ์ปจํ ์ด๋๋ ์ด ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ค. ์ปจํ ์ด๋๋ ๊ฐ์ํ๋ ํ๊ฒฝ์์ ๋์ํ๋ฉฐ, ํธ์คํธ ์ด์์ฒด์ ์ ๋ฆฌ์์ค์ ๊ฒฉ๋ฆฌ๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ค. ๊ฐ ์ปจํ ์ด๋๋ ๋ ๋ฆฝ๋ ํ๊ฒฝ์์ ์คํ๋๋ฏ๋ก, ํ๋์ ์ปจํ ์ด๋์ ๋ณํ๋ ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ์ปจํ ์ด๋์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
์ปจํ ์ด๋๋ ์์ฑ๋๊ณ ์คํ๋๋ฉด ์ปจํ ์ด๋์ ํ์ผ ์์คํ ์ ์ฝ๊ธฐ/์ฐ๊ธฐ๊ฐ ๊ฐ๋ฅํ ์ํ๋ก ๋ณํ๋ฉฐ, ํด๋น ์ปจํ ์ด๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ฒ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ด ๋๋๋ฉด ์ปจํ ์ด๋๋ ์ข ๋ฃ๋๋ฉฐ, ํด๋น ์ปจํ ์ด๋์์ ๋ฐ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ปจํ ์ด๋๊ฐ ์ญ์ ๋๋ฉด ์ฌ๋ผ์ง๋ค.
์นํ์ด์ง๋ฅผ ๋์ฐ๊ธฐ ์ํด ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ณด๋ฉด,
๋์ปค ์ด๋ฏธ์ง๋ ์น ์๋ฒ ์คํ์ ์ํ ํ ํ๋ฆฟ์ด๋ฉฐ, Dockerfile์ ์์ฑํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ์ฌ ์์ฑํ ์ ์๋ค. ๋์ปค ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ์น ์๋ฒ๊ฐ ์คํ๋์ด ์น ํ์ด์ง๋ฅผ ์ ๊ณตํ๋ค. ์ด ๋ ํธ์คํธ์ ํฌํธ์ ์ปจํ ์ด๋์ ํฌํธ๋ฅผ ๋งคํํ์ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ์น ํ์ด์ง์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์ปจํ ์ด๋๋ฅผ ์ ์ดํ์ฌ ์ค์งํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค.
Docker Hub
๋์ปค ํ๋ธ(Docker Hub)๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๊ณต์ ํ ์ ์๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ ์ง์คํธ๋ฆฌ ์๋น์ค์ด๋ค. ๋์ปค ํ๋ธ๋ ๊ฐ๋ฐ์ ๋ฐ ์กฐ์ง๋ค์ด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ๊ธฐ ์ํ ํ๋ซํผ์ผ๋ก ์ฌ์ฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
- ์ด๋ฏธ์ง ์ ์ฅ ๋ฐ ๊ณต์ : ๋์ปค ํ๋ธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ์ฌ ์ ์ฅํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ํด๋น ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฅธ ์ฌ์ฉ์์ ๊ณต์ ํ ์ ์๋ค. ๊ฐ๋ฐ์๋ค์ ์์ ์ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ ์ปค๋ฎค๋ํฐ์ ๊ณต์ ํ๊ฑฐ๋, ์กฐ์ง ๋ด์์ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ฅผ ์ ๋ก๋ํ๊ณ ํ์๋ค๊ณผ ๊ณต์ ํ ์ ์๋ค.
- ์ด๋ฏธ์ง ๋ฒ์ ๊ด๋ฆฌ: ๋์ปค ํ๋ธ์์๋ ์ด๋ฏธ์ง์ ์ฌ๋ฌ ๋ฒ์ ์ ๊ด๋ฆฌํ ์ ์๋ค. ๊ฐ ๋ฒ์ ์ ํ๊ทธ๋ฅผ ํตํด ๊ตฌ๋ถ๋๋ฉฐ, ์ด๋ฅผ ํตํด ํน์ ๋ฒ์ ์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
- ์๋ ๋น๋: ๋์ปค ํ๋ธ๋ GitHub, Bitbucket ๋ฑ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ๊ณผ ์ฐ๋ํ์ฌ, ์์ค ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ๋์ปค ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ์ ๋ฐ์ดํธํ ์ ์๋ ์๋ ๋น๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฝ๋ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ๊ฐฑ์ ํ ์ ์๋ค.
- ์กฐ์ง ๋ฐ ํ ์ง์: ๋์ปค ํ๋ธ๋ ์กฐ์ง๊ณผ ํ์ ์์ฑํ์ฌ ๋ฉค๋ฒ ๊ฐ์ ์ด๋ฏธ์ง์ ๋ฆฌ์์ค์ ๋ํ ์ ๊ทผ ๊ถํ์ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ํ์๋ค๋ผ๋ฆฌ ํ์ ํ๊ฑฐ๋ ์ญํ ์ ๋ฐ๋ผ ์ด๋ฏธ์ง๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
- ์น ์ธํฐํ์ด์ค: ๋์ปค ํ๋ธ์ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๊ณ ๋๋ฌ๋ณผ ์ ์๋ค. ์ด๋ฏธ์ง์ ๋ํ ์ ๋ณด, ํ๊ทธ, README ๋ฑ์ ํ์ธํ ์ ์๋ค.
- ์คํ ๋ฉ์ด์ ์ง์: ๋์ปค ํ๋ธ API๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ์ ๋ก๋, ๋ค์ด๋ก๋, ๊ด๋ฆฌ ๋ฑ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์๋ํํ ์ ์๋ค..
์์ฝํ์๋ฉด, ๋์ปค ํ๋ธ๋ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ค์ ์ ์ฅ์์์ ๊ด๋ฆฌํ๊ณ ๊ณต์ ํ๋ ํ๋ซํผ์ผ๋ก, ๊ฐ๋ฐ์ ๋ฐ ์กฐ์ง๋ค์ด ์ด๋ฏธ์ง๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ฐฐํฌํ ์ ์๊ฒ ๋์์ฃผ๋ ์๋น์ค์ด๋ค.