์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐ์ดํฐ๋ถ์์ค์ ๋ฌธ๊ฐ
- ์ค๋ฒ์ํ๋ง
- ADP
- datascience
- ๋ฐ์ดํฐ๋ถ๊ท ํ
- opencv
- DBSCAN
- ๋น ๋ฐ์ดํฐ
- t-test
- ๋ ๋ฆฝํ๋ณธ
- ๋์ํ๋ณธ
- ADsP
- ํฌ๋กค๋ง
- pandas
- iloc
- numpy
- ์๋ํด๋ผ์ฐ๋
- LDA
- ํ์ด์ฌ
- ๋ฐ์ดํฐ๋ถ์์ ๋ฌธ๊ฐ
- Lambda
- PCA
- ์ฃผ์ฑ๋ถ๋ถ์
- ๋น ๋ฐ์ดํฐ๋ถ์๊ธฐ์ฌ
- ํ ์คํธ๋ถ์
- Python
- ๋ฐ์ดํฐ๋ถ์
- ์ธ๋์ํ๋ง
- dataframe
- ๊ตฐ์งํ
Data Science LAB
[Docker] Docker์์ image ์์ฑ ๋ณธ๋ฌธ
๋ณธ ํฌ์คํ ์ NaverBoostcamp AI Tech 5๊ธฐ ์๋น์ค ๊ฐ๋ฐ ๊ธฐ์ด ๊ฐ์ ์๊ฐ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
1. Docker ์ค์น
๋์ปค ๊ณต์ ํํ์ด์ง์์ ์ด์์ฒด์ ์ ๋ง๋ Docker Desktop ์ค์น
https://docs.docker.com/get-docker/
2. ํฐ๋ฏธ๋์์ docker ์ปค๋งจ๋๊ฐ ๋์ํ๋ ์ง ํ์ธ
์์ ๊ฐ์ ํ๋ฉด์ด ๋์จ๋ค๋ฉด ์ ์ค์น ๋๊ฒ
3. ํ๋ก์ ํธ setting
- Pytorch ์ฝ๋ ์คํ์ ์ํ docker image ๋ฅผ ์์ฑํด๋ณด๊ณ ์ ํจ
# ํด๋ ์์ฑ
mkdir [ํด๋๋ช
]
# ์์ฑํ ํด๋๋ก ์ด๋
cd [ํด๋๋ช
]
# ํ์ด์ฌ ๋ฒ์ ํ์ธ : ์ถฉ๋ ์๋๊ฒ ์ค์ ์ํด์ผํจ
python -V
poetry init
poetry add torch torchvision
Poetry
์์กด์ฑ ๊ด๋ฆฌ ๋ฐ ํ์ด์ฌ ๋ด ํจํค์ง์ ์ํ ํด๋ก ํ๋ก์ ํธ๊ฐ ์์กดํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ ๊ด๋ฆฌํด์ค
์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ค
poetry๋ lock ํ์ผ๊ณผ pyproject.toml(requirements.txt ๊ฐ์ด ์ค์นํ ํจํค์ง๋ฅผ ๋ฆฌ์คํ ํด๋์ ํ์ผ)์ ์๋์ผ๋ก ์์ฑ ๋ฐ ์ ๋ฐ์ดํธํจ
4. Docker file ์์ฑ
Docker Image๋ฅผ ๋น๋ํ๊ธฐ ์ํ ์ ๋ณด๊ฐ ๋ด๊ธด Dockerfile์ ์์ฑํด์ค๋ค.
# FROM ์ด๋ฏธ์ง ์ด๋ฆ : ํ๊ทธ -> ๋ฒ ์ด์ค ์ด๋ฏธ์ง ์ง์ (dockerhub์ ์กด์ฌํ๋ ์ด๋ฏธ์ง๊ฐ์ ธ์ด)
FROM pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime
# COPY "๋ก์ปฌ ๋๋ ํ ๋ฆฌ ํ์ผ" "์ปจํ
์ด๋ ๋ด ๋๋ ํ ๋ฆฌ ํ์ผ"
# ํ์ผ์ ์ปจํ
์ด๋์์ ์ฌ์ฉํ๋ ค๋ฉด COPY ๋ช
๋ น์ด๋ก ๋ฐ๋์ ๋ณต์ฌ
COPY . /app
# ENV "ํ๊ฒฝ๋ณ์ ์ด๋ฆ=๊ฐ" : ์ปจํ
์ด๋ ๋ด ํ๊ฒฝ๋ณ์ ์ง์
ENV PYTHONPATH=/app
# RUN "์คํํ ๋ฆฌ๋
์ค ๋ช
๋ น์ด"
RUN pip install poetry=1.4.2 &&\
pip install -r requirements.txt
# CMD ['์คํํ ๋ช
๋ น์ด', '์ธ์', ...]
CMD ['python', 'main.py']
๊ทธ ์ธ์ ์ฌ์ฉํ๋๊ฒ
- EXPOSE : ์ปจํ ์ด๋ ์ธ๋ถ์ ๋ ธ์ถํ ํฌํธ ์ง์
- ENTRYPOINT : ์ด๋ฏธ์ง๋ฅผ ์ปจํ ์ด๋๋ก ๋์ธ ๋ ํญ์ ์คํํ๋ ์ปค๋งจ๋
5. Docker image Build
docker build -t <๋น๋ํ ์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ ์ด๋ฆ> "Dockerfile์ด ์์นํ ๊ฒฝ๋ก"
-t "์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ"์ต์ ์ผ๋ก ์ด๋ฏธ์ง ์ด๋ฆ๊ณผ ํ๊ทธ๋ฅผ ์ง์ ํ ์ ์์ (default : latest)
6. ๋น๋๋ ์ด๋ฏธ์ง ํ์ธ
docker images
์์ ๋ช ๋ น์ด๋ก ๋ฐฉ๊ธ ๋น๋ํ ์ด๋ฏธ์ง๋ฅผ ํ์ธํ ์ ์์
7. ์ปจํ ์ด๋ ์คํ
docker run " ์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ"
๋ฐฉ๊ธ ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ์คํํ๋ค. (ํ๊ทธ๊ฐ latest์ธ ๊ฒฝ์ฐ๋ ์๋ต ๊ฐ๋ฅํจ)
8. Docker Image Push
์ด๋ฏธ์ง ์ ์ฅ์์ธ Container Registry๋ก Docker Image๋ฅผ pushํ ์ ์์
1) Dockerhub์์ ๊ณ์ ์์ฑ
2) ๋ก๊ทธ์ธํ๋ฉด dockerhub์ pushํ ์ด๋ฏธ์ง ๋ชฉ๋ก์ ๋ณผ ์ ์์
3) docker login ๋ช ๋ น์ด๋ก ๊ณ์ ์ CLI์ ์ฐ๋
docker login
4) tag์ค์
docker tag "๊ธฐ์กด ์ด๋ฏธ์ง:ํ๊ทธ" "์ ์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ"
dockerhub์ ์ฌ๋ฆด ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ด ๊ณ์ ID/์ด๋ฏธ์ง ์ด๋ฆ ํํ์ฌ์ผํจ
docker push "์ด๋ฏธ์ง ์ด๋ฆ:ํ๊ทธ"
-> pushํ ์ด๋ฏธ์ง๋ docker pull ๋ช ๋ น์ด๋ก ์ด๋์๋ ๋ฐ์ ์ ์์