-
1. ์ปจํ ์ด๋๋?
์ํํธ์จ์ด๋ OS์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กด์ฑ์ ๋ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ๋์ ์ปดํจํฐ์์ ์ฑ๊ฒฉ์ด ๋ค๋ฅธ(OS,๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ด ๋ค๋ฅธ) ์ํํธ์จ์ด๋ฅผ ํ๋ฒ์ ์คํํ ๋ ์ด๋ ค์์ ๊ฐ์ง ์ ์๊ณ ๊ด๋ จ๋ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ์ด๋ ต๋ค. ์ปจํ ์ด๋(Container)๋ ๊ฐ๋ณ Software์ ์คํ์ ํ์ํ ์คํํ๊ฒฝ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ฉํ ์ ์๋๋ก ๊ธฐ๋ฐํ๊ฒฝ ๋๋ ๋ค๋ฅธ ์คํํ๊ฒฝ๊ณผ์ ๊ฐ์ญ์ ๋ง๊ณ ์คํ์ ๋ ๋ฆฝ์ฑ์ ํ๋ณดํด์ฃผ๋ ์ด์์ฒด๊ณ ์์ค์ ๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ๋งํฉ๋๋ค. ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๊ตฌ๋ ํ๊ฒฝ์ผ๋ก๋ถํฐ ์ถ์ํํ ์ ์๋ ๋ ผ๋ฆฌ ํจํค์ง ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค.
2. ์ปจํ ์ด๋์ ๊ฐ์๋จธ์ (VM)์ ์ฐจ์ด
๊ฐ์๋จธ์ ๋ํ ๋ ๋ฆญ์ ์ธ ์คํํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋๋ก ๋์์ฃผ๋๋ฐ ์ฐจ์ด๋ ๋ค์๊ณผ ๊ฐ๋ค.- ๊ฐ์๋จธ์
HyperVisor๋ผ๋๊ฒ์ด ์๋ค. ์ด๋ ์ปดํจํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ธํ๋ผ ๋ฆฌ์์ค๋ค์ ๋ํด VM๋ณ๋ก ๋ฐฐ๋ถ ํ๋์ญํ ๋ค์ ํ๋ค. ๋ํ ๊ฐ VM์์๋ ๋ ๋ฆฝ์ ์ธ Guest OS๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๋ฐ๋ผ์ ๋ ๋ฆฝ์ ์ธ ํ๋ซํผ์ ํ๋์ฉ ์ฆ๊ฐ์ํฌ ๋๋ง๋ค ๋ถํ์ํ OS๋ฅผ ๋ง๋๋ ์์ ์ ๋ํด์ ๊ณ์ํด์ ํด์ผํ๋ค. ์ฆ ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ๋ ์์์ ๊ดํด์ ์ ๋์ ์ผ๋ก ๊ด๋ฆฌ ๋๋๊ฒ ์๋๋ผ ์ฒ์๋ถํฐ ์ ํด๋๊ณ ์คํํ๊ธฐ์ ๋นํจ์จ์ ์ด๋ค.- ์ปจํ ์ด๋
์ปจํ ์ด๋์ ๊ฒฝ์ฐ ํ๋์ Host OS์์์ ๋ง์น ๊ฐ๊ฐ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋จ์ฒ๋ผ ๊ด๋ฆฌ๋๊ณ ์คํ๋๋ค. ๋ถํ์ํ OS๋ง๋๋์์ ๋ฐ Infra๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋๋ ํ์๊ฐ ์์ด์ ํ์ฅ์ฑ์ด ์ข๊ณ ๋น ๋ฅด๋ค.
- ์ปจํ ์ด๋ ์ฅ์ ์ ๋ฆฌ
- ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ ๊ณ ๋ฆฝ
- VM๋ณด๋ค ๋น ๋ฅธ ์ ์
- VM๋ณด๋ค ๋ฉ๋ชจ๋ฆฌ ๋ ์๋ชจ
- ๋ง์ด๊ทธ๋ ์ด์ , ๋ฐฑ์ , ์ ์ก์ด ์ฌ์. VM๊ณผ ๋น๊ตํด ํฌ๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ๋์จ์ด์์ ๋น ๋ฅธ ์ปค๋ฎค๋์ผ์ด์ ์ ๋ฐ๋ผ, ์ฑ๋ฅ์ ํจ๊ณผ์ ์ผ ์ ์๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐ์น์ ์ ์ง๋ณด์๋ฅผ ํฅ์์ํจ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฌ ์๊ฐ ๊ฐ์
3. ๋์ปค๋?
๋์ปค๋ ์ปจํ ์ด๋ ๊ธฐ๋ฐ์ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ์ค ํ๋์ด๋ค. Docker๋ฅผ ์ฌ์ฉํ๋ฉด ์ธํ๋ผ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ถ๋ฆฌํ์ฌ ์ปจํ ์ด๋๋ก ์ถ์ํ์์ผ ์ํํธ์จ์ด๋ฅผ ๋น ๋ฅด๊ฒ ์ ๊ณต ํ ์ ์์ต๋๋ค.์ด๋ ์ฃผ์ด์ง ํ๋์ ํธ์คํธOS์์์ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ๋์์ ์คํ ํ ์ ์์ต๋๋ค. ๋ํ ๋์ปค๋ ์ปจํ ์ด๋์ ๋ผ์ดํ ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ณ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ค์ผ์คํธ๋ ์ด์ (Work flow์ ์๋ํ)๋ ์๋น์ค๋ก ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์๋ฅผ๋ค์ด ๋ฐฑ์๋ ํ๋ก๊ทธ๋จ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ๋ฉ์์ง ํ๋ฑ ์ด๋ค ํ๋ก๊ทธ๋จ๋ ์ปจํ ์ด๋๋ก ์ถ์ํํ ์ ์๊ณ ์กฐ๋ฆฝPC, AWS, Azure, Google cloud๋ฑ ์ด๋์์๋ ์คํํ ์ ์์ต๋๋ค.
[3.1]์ํคํ ์ณ
ํน์ง:Docker๋ ํด๋ผ์ด์ธํธ-์๋ฒ ์ํคํ ์ฒ์ด๋ค. ๋์ปค ํด๋ผ์ด์ธํธ์ ๋์ปค ๋ฐ๋ชฌ์ดRestApi๋ฅผ ์ฌ์ฉํ์ฌ ํต์Docker ๋ฐ๋ชฌ
- Docker Api ์์ฒญ์์ , ์ด๋ฏธ์ง,์ปจํ ์ด๋,๋คํธ์ํฌ์ ๊ฐ์ ๋์ปค ๊ฐ์ฒด ๋ฐ ๋์ปค ์๋น์ค ๊ด๋ฆฌ
Docker ํด๋ผ์ด์ธํธ
Docker ์ฌ์ฉ์๊ฐ Docker์ ์ํธ์์ฉํ๊ธฐ ์ํ ๋ฐฉ๋ฒ. ๊ธฐ๋ณธ์ ์ธ ๋์ปค๋ช ๋ น์ด๋ฅผ ํตํด์ Docker ๋ฐ๋ชฌ๊ณผ ํต์
Docker ๋ ์ง์คํธ๋ฆฌ
Docker ์ด๋ฏธ์ง๋ฅผ ์ ์ฅ, Docker hub์ด๋ผ๋ ๊ณต์ฉ ๋ ์ง์คํธ๋ฆฌ์ ๊ฐ์ธprivateํ ๋ ์ง์คํธ๋ฆฌ๊ฐ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ณต์ฉ ๋ ์ง์คํธ๋ฆฌ์์ ์คํ
docker pull, docker run: ์ฌ์ฉํ๋ฉด ํ์์ด๋ฏธ์ง ๊ฐ์ ธ์จ๋ค. docker push: ๋ ์ง์คํธ๋ฆฌ์ ์ ์ฅ
Docker ๊ฐ์ฒด
- ๋์ปค ์ด๋ฏธ์ง: ๋์ปค ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋ ์คํ์ ํ์ํ ํ์ผ๊ณผ ์ค์ ๊ฐ๋ฑ์ ํฌํจํ๊ณ ์๋ค.
- ์ปจํ ์ด๋ : ์ปจํ ์ด๋๋ ๋์ปค ์ด๋ฏธ์ง์ ์คํ ๊ฐ๋ฅํ ์ธ์คํด์ค์ ๋๋ค.
docker run //์ด๋ฅผ ํตํด ์คํ ์ปจํ ์ด๋ ์คํ์ด ๊ฐ๋ฅํ๋ค.
[3.2] ๋์ปค ์ด๋ฏธ์ง
[3.2.0] ํน์ง
- ๋์ปค ์ด๋ฏธ์ง๋ ์ปจํ ์ด๋ ์คํ์ ํ์ํ ํ์ผ๊ณผ ์ค์ ๊ฐ๋ฑ์ ํฌํจํ๊ณ ์๋ค.(์ฉ๋์ด ์์ฒญ๋จ)
- ๊ทธ๋ฆฌ๊ณ ์ปจํ ์ด๋์ ๋ฐ๋ฅธ ์ํ๊ฐ์ด ๋ณํ์ง ์์ผ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ด ์๋์น ์๊ฒ ๋ฐ๋์ ๋ฐ๋ฅธ ์์กด์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ์ปจํ ์ด๋๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ์ด๋ฉฐ, ๋ณํ๋ ๊ฐ์ ์ปจํ ์ด๋์ ์ ์ฅ๋๋ค.(์ด๋ฏธ์ง๋ ๋ณํ์ง ์๋๋ค).
- ๊ฐ์ ์ด๋ฏธ์ง์์ ์ฌ๋ฌ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์์ฑํ ์ ์๋ค.
[3.2.1] Docker Layer
๋์ปค์ ์ด๋ฏธ์ง๊ฐ ๋ณํ ๋๋ง๋ค ์๋กญ๊ฒ ๋ค์ด๋ฐ๋๋ค๋ฉด ์ด๋ฏธ์ง์ ์ฉ๋์ด ํฌ๊ธฐ์ ๋นํจ์จ์ ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Layer๋ผ๋ ๊ฐ๋ ์ ์ด์ฉํ๋ค.
ubuntu์ ์ด๋ฏธ์ง๋ A+B+C์ด๋ค. nginx์ ๊ฒฝ์ฐ A+B+C+Nginx๋ฅผ ํ๊ณ ์ถ๋ค. ์ด๋ Layer ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ubuntu์ nginx๋ง ์์ผ๋ฉด ๋๋ค.[3.2.2] ์ด๋ฏธ์ง์ ๊ฒฝ๋ก
[3.2.2] Dockerfile
๋์ปค์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์ ๋ํด ๊ธฐ์ .
์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ค๋ฉด ์ด๋ฏธ์ง ๋ฅผ ๋ง๋ค๊ณ ์คํํ๋ ๋ฐ ํ์ํ ๋จ๊ณ๋ฅผ ์ ์ํ๋ ๊ฐ๋จํ ๊ตฌ๋ฌธ ์ผ๋ก Dockerfile ์ ๋ง๋ญ๋๋ค. Dockerfile์ ๊ฐ ๋ช ๋ น์ด๋ ์ด๋ฏธ์ง์ ๋ ์ด์ด๋ฅผ ๋ง๋ญ๋๋ค. Dockerfile์ ๋ณ๊ฒฝํ๊ณ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ๋ฉด ๋ณ๊ฒฝ๋ ๋ ์ด์ด ๋ง ๋ค์ ๋น๋๋ฉ๋๋ค.# vertx/vertx3 debian version FROM subicura/vertx3:3.3.1 MAINTAINER chungsub.kim@purpleworks.co.kr ADD build/distributions/app-3.3.1.tar / ADD config.template.json /app-3.3.1/bin/config.json ADD docker/script/start.sh /usr/local/bin/ RUN ln -s /usr/local/bin/start.sh /start.sh EXPOSE 8080 EXPOSE 7000 CMD ["start.sh"]
'๐ฅ๏ธ Computer science > : Software๐ฉ๐ปโ๐ป' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฃธ๋ถ(Lombok) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? InteliJ ์ค์น/ ์์ฃผ ์ฌ์ฉ๋์ผ ํ , ์ง์๋์ด์ผ ํ ๋ฃธ๋ถ ์ด๋ ธํ ์ด์ (1) 2023.10.11 ๋๊ธ