Docker ์ฃผ์ ๋ช ๋ น์ด
- ๋์ปค ๋ช ๋ น์ด ์ฐพ์์ ์ฌ์ฉํ๊ธฐ ๐ https://docs.docker.com/reference/cli/docker/container/rm/
- cheatsheet ์ฌ์ฉํ๊ธฐ ๐ https://docs.docker.com/get-started/docker_cheatsheet.pdf
- ๋ช
๋ น์ด ๊ตฌ์ฑ :
docker ์ปค๋งจ๋ (์ต์ ) ๋์ (์ธ์)
docker run --name apa03 -d -p 8081:80 httpd
docker --version
docker ps -a
: ์ค์ง๋ ์ปจํ ์ด๋๊น์ง ๋ชจ๋ ํ์ธdocker pull [์ด๋ฏธ์ง ์ด๋ฆ]
: docker hub์์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋- ์คํ ์ค์ธ ์ปจํ
์ด๋ ๋ชจ๋ ์ญ์
docker rm -f $(docker ps -aq)
docker run
=docker pull
+docker create
+docker start
- ์ปจํ
์ด๋ ์๋ช
์ฃผ๊ธฐ
- create
- start
- stop
- rm (remove) ๐ ๋ฆฌ์์ค ๊ด๋ฆฌ
๐น ์ต์ -d
$ docker run -p 8080:8080 -t spring-helloworld
$ docker run -d -p 8080:8080 -t spring-helloworld
The --detach(or -d) flag starts a container as a background process that doesn't occupy your terminal window.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ ๐ ํฐ๋ฏธ๋ ์คํ X, ๋ก๊ทธ X
๐น ์ต์ -p
- ์ปจํ ์ด๋์ ํฌํธ์ ํธ์คํธ์ ํฌํธ ์ฐ๊ฒฐ
Dockerfile ๋ช ๋ น์ด
- Dockerfile reference ๐ https://docs.docker.com/reference/dockerfile/
- FROM : ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ง์ ๐ ์ด๋ค ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์์
ํ ๊ฒ์ธ์ง ๋ช
์
- FROM ubuntu:latest
- WORKDIR : RUN, CMD, ENTRYPOINT, COPY, ADD ๋ช
๋ น์ด๋ฅผ ์คํํ ๋๋ ํ ๋ฆฌ ์ง์
- WORKDIR /usr/app
- RUN : ์ด๋ฏธ์ง ๋น๋ ๊ณผ์ ์ค์ ์ ๋ช ๋ น์ด ์คํ ๐ ํ์ํ ํจํค์ง ์ค์น, ๋น๋ ํ๋ก์ธ์ค ์คํ ๋ฑ์ ์ฌ์ฉ๋จ
- EXPOSE : ์ด๋ค ํฌํธ๋ฅผ ์ธ๋ถ์ ๋ ธ์ถ์ํฌ ์ง ๋ช ์
- COPY : ํธ์คํธ์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๋ฏธ์ง ๋ด๋ถ๋ก ๋ณต์ฌ ๐ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ค ์ฝ๋๋ฅผ ์ด๋ฏธ์ง์ ์ถ๊ฐํ ๋ ์ฃผ๋ก ์ฌ์ฉ
- COPY build/libs/app.jar app.jar ๐ ํธ์คํธ ๋ด build/libs/app.jar ํ์ผ์ WORKDIR ์์น์ app.jar๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณต์ฌ
- ADD : COPY์ ์ ์ฌํ์ง๋ง ์๊ฒฉ URL์์ ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ ์์ถํ์ผ์ ์๋์ผ๋ก ํด์ ํ๋ ๋ฑ์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ ๊ณต
- ENTRYPOINT : ์ด๋ฏธ์ง๋ฅผ ์ปจํ
์ด๋๋ก ์คํ์ํฌ ๋ ํญ์ ์คํ๋๋ ๋ช
๋ น์ด ์ง์ ๐ ๋ํดํธ๋ก ๋ฌด์กฐ๊ฑด ์คํํ๊ณ ์ถ์ ํญ๋ชฉ ๋ช
์
- ENTRYPOINT ["java", "-jar", "/app.jar"]
- CMD : ์ปจํ
์ด๋๊ฐ ์์๋ ๋ ์คํํ ๋ช
๋ น์ด ์ง์ (ENTRYPOINT์ ์ ์ฌ) ๐ ํด๋น ์ธ์๊ฐ CMD๋ก ์ง์ ํ ๋ช
๋ น์ด๋ฅผ ๋ฎ์ด์ธ ์ ์์ (ENTRYPOINT๋ ๋ถ๊ฐ)
- ENV : ํ๊ฒฝ๋ณ์ ์ค์
โจ Dockerfile ํจํด ๐ https://github.com/docker/awesome-compose
๐น Dockerfile๋ก ์ด๋ฏธ์ง ์์ฑ
$ docker build -t nginx_with_dockerfile:01 .
์ต์ -t
๐ ์์ฑ๋ ์ด๋ฏธ์ง์ ์ด๋ฆ๊ณผ ํ๊ทธ ์ค์ - build ๋ช ๋ น์ด ๋์ Dockerfile์ด ์ ์ฅ๋ ๊ฒฝ๋ก ์ ๋ ฅ
Dockerfile ์ต์ ํ
๋์ปค ์ด๋ฏธ์ง ํฌ๊ธฐ ์ค์ด๊ธฐ ๐ ์ด๋ฏธ์ง์ ํจ์จ์ฑ์ ๋์ด๊ณ ๋ฐฐํฌ ์๊ฐ ๋จ์ถ ๋ฐ ๋ณด์ ๊ฐํ
- ๊ฒฝ๋ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ฌ์ฉ
- ex) alpine ์ด๋ฏธ์ง โ ์ต์ํ์ ๊ธฐ๋ฅ๋ง ํฌํจ
- ๋ฉํฐ ์คํ
์ด์ง ๋น๋ ์ฌ์ฉ
- ๋น๋ ๋จ๊ณ์๋ง ํ์ํ ๋๊ตฌ๋ฅผ ์ต์ข ์ด๋ฏธ์ง์์ ์ ์ธ์ํด ๐ ์ต์ข ์ด๋ฏธ์ง์๋ ์ดํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ํ์ผ๊ณผ dependencies๋ง ํฌํจ๋จ
- ์ฌ๋ฌ ๊ฐ์
FROM
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ ๐ ๊ฐ ์คํ ์ด์ง๋ ๋ ๋ฆฝ์ ์ธ ๋ฒ ์ด์ค ์ด๋ฏธ์ง ๊ฐ์ง ์ ์์ - ์ฒซ ๋ฒ์งธ ์คํ ์ด์ง : ๋น๋์ ํ์ํ ๋๊ตฌ์ ์์ค ์ฝ๋๋ฅผ ์ปดํ์ผํ๋ ๋ฐ ํ์ํ ์์ ์ํ
- ์ดํ ์คํ ์ด์ง : ์ฒซ ๋ฒ์งธ ์คํ ์ด์ง์์ ์์ฑ๋ artifact๋ง์ ๊ฐ์ ธ์์ ์ต์ข ์ด๋ฏธ์ง ์์ฑ
๐ ๋ถํ์ํ ๋น๋ ๋๊ตฌ๋ ์ค๊ฐ ์์ฑ๋ฌผ์ ์ต์ข
์ด๋ฏธ์ง์์ ์ ์ธํ ์ ์์ด ์ด๋ฏธ์ง ํฌ๊ธฐ ๊ฐ์
- ํ์์๋ ํ์ผ ์ ๊ฑฐ
- ๋น๋ ๊ณผ์ ์์ ์์ฑ๋๋ ์์ ํ์ผ, ์บ์ ํ์ผ ๋ฑ ํ์์๋ ํ์ผ์
RUN
๋ช ๋ น์ด์์ &&rm -rf/path/to/temporary/files
์ ๊ฐ์ด ์ ๊ฑฐํ์ฌ ์ด๋ฏธ์ง ํฌ๊ธฐ ๊ฐ์
- ๋น๋ ๊ณผ์ ์์ ์์ฑ๋๋ ์์ ํ์ผ, ์บ์ ํ์ผ ๋ฑ ํ์์๋ ํ์ผ์
- ๋ ์ด์ด ์ ์ต์ํ
RUN
,ADD
,COPY
๋ช ๋ น์ด๋ ์๋ก์ด ๋ ์ด์ด ์์ฑ ๐ ์ ์ ํ ์กฐํฉํ์ฌ ๊ฐ๋ฅํ ํ ์ ์ ์์ ๋ ์ด์ด ์์ฑ
- COPY์ ADD ๋ช
๋ น์ด ์ ์คํ๊ฒ ์ฌ์ฉ
- .dockerignore ํ์ผ์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ํ์ผ์ด ์ด๋ฏธ์ง์ ํฌํจ๋์ง ์๋๋ก ์ค์
- ํ๊ฒฝ ๋ณ์๋ฅผ ์ด์ฉํ ์ค์
- ์ค์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ํ์ง ์์๋ ๋๋ฏ๋ก ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๋ฐ ๋์
- ์ ์ ํ ํ๊ทธ ์ฌ์ฉ
- ๋ถํ์ํ ์ ๋ฐ์ดํธ๋ก ์ธํ ํฌ๊ธฐ ์ฆ๊ฐ ํผํ๊ธฐ
์ฐธ๊ณ ์๋ฃ
https://docs.docker.com/guides/walkthroughs/run-hub-images/
https://www.docker.com/blog/kickstart-your-spring-boot-application-development/
'DevOps > ๐ณ Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๐ณ Docker] ๋์ปค์ ๊ฐ๋ (0) | 2023.09.13 |
---|