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
docker build -t java-server .
docker run -dit -p 8080:8081 java-server
CMD์ ENTRYPOINT๋ ๋ ๋ค ๋์ปค ์ด๋ฏธ์ง ๋ด์์ ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ ์คํํ ๋ช ๋ น์ด ๋๋ ํ๋ก์ธ์ค๋ฅผ ์ง์ ํ๋ ๋ช ๋ น์ด์ด์ง๋ง, ๋ช ๊ฐ์ง ์ฐจ์ด๊ฐ ์๋ค.
CMD
- CMD ๋ช ๋ น์ด๋ ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํํ ๋ช ๋ น์ด๋ฅผ ์ง์
- ํ์ง๋ง, docker run ๋ช ๋ น์ ์คํํ ๋ ์ปจํ ์ด๋ ์คํ๊ณผ ๊ด๋ จ๋ ์ถ๊ฐ ์ธ์๋ฅผ ์ ๊ณตํ๋ฉด, ํด๋น ์ธ์๊ฐ CMD๋ก ์ง์ ํ ๋ช ๋ น์ด๋ฅผ ๋ฎ์ด์ด๋ค
- ์ปจํ ์ด๋ ์คํ ์ ์คํํ ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ ์ ์ง์ ํ๋ ์ฉ๋๋ก ํ์ฉ
- ๋ช ๋ น์ด๋ฅผ ๋ฐฐ์ด ํํ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
ENTRYPOINT
- ENTRYPOINT ๋ช ๋ น์ด๋ ์ปจํ ์ด๋๊ฐ ์์๋ ๋ ํญ์ ์คํํ ๋ช ๋ น์ด๋ฅผ ์ง์
- docker run ๋ช ๋ น์ ํตํด ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ์ถ๊ฐ ์ธ์๋ก ๋ฎ์ด์ธ ์ ์์.
- ์ถ๊ฐ ์ธ์๋ ENTRYPOINT๋ก ์ง์ ํ ๋ช ๋ น์ด์ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ฌ ์คํ ํ์ผ ๋๋ ์คํ ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ ํ๋ ๋ฐ ์ฌ์ฉ
- CMD์ ๋ฌ๋ฆฌ ENTRYPOINT๋ ๋ฐฐ์ด ํํ๋ก ์ง์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์ ธ์ ์ํด ์คํ
๊ฐ๋จํ ๋งํด, CMD์ ENTRYPOINT ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ ์คํ๋๋ ๋ช ๋ น์ด๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ฐจ์ด์ ์ CMD๋ ์ถ๊ฐ ์ธ์๋ก ๋ช ๋ น์ด๋ฅผ ๋ฎ์ด์ธ ์ ์์ง๋ง, ENTRYPOINT๋ก ์ค์ ํ ๋ช ๋ น์ด๋ ์ปจํ ์ด๋ ์คํ ์ ์ถ๊ฐ ์ธ์๋ก ๋ฎ์ด์ธ ์ ์๋ค๋ ์ ์ด๋ค. ์ด ๋ ๋ช ๋ น์ด๋ฅผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ปจํ ์ด๋์ ์คํ ํ๊ฒฝ์ ์กฐ์ ํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ์ ์๋ค.
CMD vs ENTRYPOINT ์ฌ์ฉ ์์
ENTRYPOINT์ CMD๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ํฌํธ๋ฅผ ์ง์ ํ๋ ์์ ๋ก CMD์ ENTRYPOINT์ ์ฐจ์ด์ ์ ์์๋ณด๋ ค ํ๋ค.
CMD
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY ./aws-v3-0.0.3.jar ./application.jar
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "application.jar"]
CMD ["--server.port=3000"]
- CMD ๋ช ๋ น์ผ๋ก ์๋ฒ ํฌํธ๋ฅผ 3000๋ฒ์ผ๋ก ์ง์
- CMD ๋ก ์คํํ ๋ช ๋ น์ด๋ docker run ๋ช ๋ น ์ ์ถ๊ฐ ์ธ์๋ก ๋ฎ์ด์ธ ์ ์์
docker build -t java-server .
docker run -dit -p 8080:3000 java-server
- ์์ฑ๋ ์ปจํ ์ด๋์ ์๋ฒ ํฌํธ๊ฐ 3000๋ฒ์ด๊ธฐ ๋๋ฌธ์ ํฌํธํฌ์๋ฉ์ 8080:3000์ผ๋ก ํ๊ณ , localhost:8080์ผ๋ก ์ ์ํ๋ฉด ์ ์ ์ ์ ๊ฐ๋ฅ
docker run -dit -p 8080:5000 java-server --server.port=5000
- ๋ํ ๋์ปคํ์ผ์์ ์๋ฒ ํฌํธ ๋ฒํธ๋ฅผ CMD ๋ช ๋ น์ผ๋ก ์ง์ ํ๊ธฐ ๋๋ฌธ์ docker run ๋ช ๋ น ์ ์๋ฒํฌํธ๋ฅผ ์๋ก ์ง์ ํ๋ ์ธ์๋ฅผ ์ถ๊ฐํ ์ ์์
- docker run ๋ช ๋ น ์ --server.port=5000์ผ๋ก ์ง์ ํ๊ณ ํฌํธํฌ์๋ฉ ์ญ์ 8080:5000์ผ๋ก ํ๋ฉด ์ ์ ์ ์ ๊ฐ๋ฅ
ENTRYPOINT
FROM openjdk:11-jdk-slim
WORKDIR /app
COPY ./aws-v3-0.0.3.jar ./application.jar
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=dev", "application.jar", "--server.port=3000"]
- ENTRYPOINT ์์ ์๋ฒํฌํธ๋ฅผ 3000๋ฒ์ผ๋ก ์ง์
- ENTRYPOINT๋ก ์ง์ ํ ๋ช ๋ น์ docker run ์ ๋ช ๋ น์ผ๋ก ๋ฎ์ด์ธ ์ ์์
docker build -t java-server .
docker run -dit -p 8080:3000 java-server
- ํฌํธํฌ์๋ฉ์ 8080:3000์ผ๋ก ์ง์ ํ๋ฉด ์ ์ ์ ์
docker run -dit -p 8080:5000 java-server --server.port = 5000
- docker run ๋ช ๋ น ์ ์๋ฒ ํฌํธ๋ฅผ 5000์ผ๋ก ๋ณ๊ฒฝํ๊ณ ํฌํธํฌ์๋ฉ ์ญ์ 8080:5000์ผ๋ก ์ค์ ํ์ง๋ง ์ ์ ๋ถ๊ฐ
- ENTRYPOINT๋ก ์ง์ ํ ๋ช ๋ น์ docker run ๋ช ๋ น์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ ๋ถ๊ฐ๋ฅ
๋๋ฌธ์ docker run ๋ช ๋ น ์ ์ต์ ์ผ๋ก ์ง์ ํ๊ณ ์ถ์ ํญ๋ชฉ์ ๊ฒฝ์ฐ CMD๋ฅผ ์ฌ์ฉํ๊ณ ,
๋ํดํธ๋ก ๋ฌด์กฐ๊ฑด ์คํํ๊ณ ์ถ์ ํญ๋ชฉ์ ENTRYPOINT๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.