์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- redshift
- Airflow
- k8s
- etl
- disk spill
- Docker
- Spark Partitioning
- AQE
- Speculative Execution
- aws
- backfill
- topic
- Salting
- Spark
- Dag
- spark executor memory
- off heap memory
- ๋น ๋ฐ์ดํฐ
- Spark SQL
- DataFrame Hint
- mysql
- CI/CD
- Spark ์ค์ต
- Kubernetes
- colab
- Spark Caching
- Kafka
- SQL
- KDT_TIL
- ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ
- Today
- Total
JUST DO IT!
Docker์ Docker File - TIL230519 ๋ณธ๋ฌธ
๐ KDT WEEK 7 DAY 5 TIL
- AWS Lambda
- Docker
- Docker ๋ช ๋ น์ด
- Docker File
- Docker Port forwarding
๐ฅ AWS Lambda
๋ณ๋์ ์๋ฒ์์ด ๋จ์ ํจ์๋ง์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋์ํ๋ ์๋น์ค
ํน์ ์ด๋ฒคํธ๋ ํ์์ ๋ํด ํ๋ก๊ทธ๋จ ์คํ์ ์ํ ๋ ์ฌ์ฉ
> ํธ๋ฆฌ๊ฑฐ์ ํน์ ์ด๋ฒคํธ๋ฅผ ์ค์ ํด์ Lambda๊ฐ ์๋ํ๋๋ก ๊ตฌํํ๋ค.
ex) S3์ ๋ฐ์ดํฐ ์ ์ก๋ง๋ค Lambda ์๋
1. Lambda ํจ์ ์์ฑ
2. S3 ํน์ ๋ฒํท ์ค์ > ์ด๋ฒคํธ ์๋ฆผ ์์ฑ > ๊ฐ์ฒด ์ ์ก ์ด๋ฒคํธ์ ์ฒดํฌ > ํด๋น Lambda ํจ์ ์ค์
3. ํด๋น ๋ฒํท์ ํ์ผ์ด ์๋ก ์ฌ๋ผ์ค๋ฉด Lambda ํจ์๊ฐ ์ฒ๋ฆฌํจ์ ๋ฐ๋ผ CloudWatch ๋ก๊ทธ์ ๊ธฐ๋ก๋จ
๐ฆ Docker
์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ฒ ๊ตฌ์ถ, ํ ์คํธ ๋ฐ ๋ฐฐํฌํ ์ ์๋ ์๋น์ค
>> ์ํํธ์จ์ด๋ฅผ ์ปจํ ์ด๋๋ผ๋ ํ์คํ๋ ์ ๋์ผ๋ก ํจํค์งํ์ฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์์คํ ๋๊ตฌ, ์ฝ๋, ๋ฐํ์ ๋ฑ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ ๋ด์๋์ด ์ ์ํ๊ฒ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์ด๋ฏธ์ง(Image)
์ปจํ ์ด๋๋ฅผ ์์ฑํ ๋ ํ์ํ ์์
์ปจํ ์ด๋์ ๋ชฉ์ ์ ๋ง๋ ๋ฐ์ด๋๋ฆฌ์ ์์กด์ฑ์ด ์ค์น๋์ด ์๋ค.
์ฌ๋ฌ ๊ฐ์ ๊ณ์ธต์ผ๋ก ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ก ์กด์ฌํ๋ค.
Docker Image์ ๊ตฌ์ฑ ์์
- ๊ธฐ๋ณธ OS์ ๊ฐ์ ์ํํธ์จ์ด์ ์คํํ๊ฒฝ
- ์ํํธ์จ์ด ์์ฒด(์ฝ๋)
- ์ํํธ์จ์ด๊ฐ ํ์๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ์ผ ์์คํ ์ค๋ ์ท
- ํ๊ฒฝ ์ค์ ๋ณ์
- ๋ฉํ ๋ฐ์ดํฐ(์ด๋ฏธ์ง ์์ฒด์ ๋ํ ์ ๋ณด)
Docker Registry : Docker Image๋ค์ ๋ณด๊ด์ > docker hub๊ฐ ๊ฐ์ฅ ์ ๋ช
์ปจํ ์ด๋(Container)
ํธ์คํธ์ ๋ค๋ฅธ ์ปจํ ์ด๋๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๋ ์์คํ ์์๊ณผ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค
์ด๋ฏธ์ง๋ฅผ ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉํ๊ณ , ๋ณ๊ฒฝ์ฌํญ์ ์ปจํ ์ด๋ ๊ณ์ธต์ ์ ์ฅํ๋ค.
>> ์ปจํ ์ด๋์์ ๋ฌด์์ ํ๋ ์ด๋ฏธ์ง์๋ ์ํฅ์ ์ฃผ์ง ์๋๋ค!
Docker๋ ๊นํ๋ธ์ ๋น์ทํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Docker Hub๊ฐ ์กด์ฌํ์ฌ ์ด๋ฏธ์ง๋ฅผ pull ํ๊ฑฐ๋ pushํ ์ ์๋ค.
Docker ๋ช ๋ น์ด
1. Container ์์ฑ ๋ฐ ์คํ ๊ด๋ จ ๋ช ๋ น์ด
- run : ์๋ก์ด container ์์ฑ ๋ฐ ์คํ
- -d ์ต์ ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋์์๋ ๋์๊ฐ ์ ์๋๋ก ์คํํ ์ ์๋ค.
- stop : container ์ค์ง
- start : container ์คํ
- restart : container ์ฌ์คํ
2. Container ๊ด๋ฆฌ ๊ด๋ จ ๋ช ๋ น์ด
- ps : container ํ์ธ
- rm : container ์ญ์
3. Container ์คํ ๊ด๋ฆฌ ๊ด๋ จ ๋ช ๋ น์ด
- logs : container log ํ์ธ
- exec : ์คํ๋ Container์ ์์ ํ๊ธฐ
4. image ๊ด๋ฆฌ ๊ด๋ จ ๋ช ๋ น์ด
- images : image ํ์ธ
- rmi : image ์ญ์
- pull : image ๋ค์ด๋ก๋ํ๊ธฐ
- push : image ์ ๋ก๋ํ๊ธฐ
- tag : image ํ๊ทธ ์ง์ ํ๊ธฐ(์ด๋ฏธ์ง ๋ณ์นญ ์ง์ ํ๊ธฐ)
- docker tag image1 image2 : ๋ณธ๋ ์กด์ฌํ๋ image1์ ๋ณ์นญ์ผ๋ก image2๋ฅผ ๋ณ๊ฐ๋ก ๋ ๊ฐ์ง๊ฒ๋จ.
- image1 ๊ณผ image2์ IMAGE ID๋ ๊ฐ๋ค.
Docker File
ํด๋น ์ํํธ์จ์ด๋ฅผ ์ด๋ฏธ์ง๋ก ๋ฐ๊พธ๊ธฐ ์ํ Docker์๊ฒ ์ฃผ๋ ๋ช ๋ น๋ค ํฌํจํ ํ์ผ
Docker Image๊ฐ Dockerfile์ ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ ธ ํ๋์ Docker Container์์์ ์คํ๋๋ค.
์ด๋ค ์ํํธ์จ์ด๋ฅผ ์ค์นํ ๊ฒ์ด๋? , ์ด ํ๋ก๊ทธ๋จ์ ์ด๋ป๊ฒ ์คํํ ๊ฒ์ด๋? ๋ฑ์ ๋ช ์ํ๋ค
๊ธฐ๋ณธ ๋ช ๋ น์ด
- FROM : ๊ธฐ๋ณธ์ด ๋๋ ์ํํธ์จ์ด ์ด๋ฏธ์ง, ์ฝ๋ก ๋ค์๋ ๋ฒ์ ์ด๋ฆ์ด ๋ถ๋๋ค.
- COPY : ์ฒซ ๋ฒ์งธ ์ธ์์ ๋ณต์ฌํ ํ์ผ, ๋ ๋ฒ์งธ ์ธ์์ ๋ณต์ฌ๋๋ ๊ฒฝ๋ก๊ฐ ์ฐ์ธ๋ค.
- RUN : ๋น๋์ ์ ์คํฌ๋ฆฝํธ ํน์ ๋ช ๋ น์ ์ง์ ํ๋ค.
Container๊ฐ ์์ํ ๋ ์คํ๋์ด์ผ ํ๋ ๋ช ๋ น์ด๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
1. CMD
CMD๋ docker run ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ง์ ํ ํ์ผ(์ ์คํฌ๋ฆฝํธ ๋ฑ)์ด ์๋ ๋ค๋ฅธ ํ์ผ๋ก ์ฝ๊ฒ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค.
- CMD ["./cmd1.sh"]
- docker run imageName ์ฌ์ฉ์ ./cmd1.sh ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์คํ๋๋ค.
- docker run imageName cmd2.sh ์ฌ์ฉ์ cmd2.sh๊ฐ ์คํ๋๋ค.
2. ENTRYPOINT
CMD์ ๋ง์ฐฌ๊ฐ์ง๋ก Container๊ฐ ์์ํ ๋ ์คํ๋์ด์ผ ํ๋ ๋ช ๋ น์ด๋ ์ง์ ํ๋ค.
CMD์ ํจ๊ป ์ฐ์ด๊ฒ ๋์ด, CMD ๊ฐ์ด ํ๋ผ๋ฏธํฐ๋ก ์คํ๋๊ณ , ENTRYPOINT๊ฐ ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ญํ ์ ๋งก๋๋ค.
- ENTRYPOINT ["entrypoint.sh"]
- CMD ["param1", "param2"]
- docker run imageName ์ฌ์ฉ์ entrypoint.sh param1 param2 ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์คํ๋๋ค.
- docker run imageName cmd2 ์ฌ์ฉ์ entrypoint.sh cmd2 ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์คํ๋๋ค.
- docker run --entrypoint="cmd3.sh" imageName ์ฌ์ฉ์ /cmd3.sh param1 param2 ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์คํ๋๋ค.
์ด์ฒ๋ผ ๋ ๊ฐ์ง์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ง๋ง, ๊ทธ๋ฅ ์ต๋ํ CMD๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉํฅ์ผ๋ก ๊ธฐ์ตํ๋ฉด ์ข๋ค.
์ฐธ๊ณ ๋ก Docker File์ ์ด ๋ช ๋ น์ด๋ค์ด ์ฌ๋ฌ๋ฒ ์ฌ์ฉ๋๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๊ฒ๋ง ์ฌ์ฉ๋๋ค.
๊ธฐํ ํค์๋
- WORKDIR : ์์ ๊ฒฝ๋ก ๋ณ๊ฒฝ, ์ด ์๋๋ถํฐ๋ ๊ธฐ๋ณธ๊ฒฝ๋ก๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ๋ก๋ก ๋ฐ๋๋ค.
- METATAINER : ๋ฉ์ธํ ์ด๋ ์ ๋ณด
- ARG : Docker Image๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ๋๋ ๋ณ์ ์ง์
- ENV : ์ปจํ ์ด๋๊ฐ ์คํ๋ ๋ ์ฌ์ฉํ๋ ํ๊ฒฝ ๋ณ์ / ์ต์ข ์ ์ผ๋ก ์ด๋ฏธ์ง์ ์ ์ฅ๋๋ค.
- USER : ์ปจํ ์ด๋๋ฅผ ์คํํ ๋ ์ฌ์ฉํ ์ ์ ID
- EXPOSE : ํธ์คํธ์ ์ฐ๊ฒฐํ ํฌํธ๋ฒํธ
๋ค์ ๋ ๊ฐ์ง๋ Docker File์ ์์์ด๋ค.
ex) Python์ Dockerfile
FROM python:3.9-alpine
WORKDIR /root
ADD ์คํํ ํ์ผ.py . #WORKDIR์ ์ง์ ํ์ผ๋ฏ๋ก ์ง์ ํด๋๋ฅผ ๊ธฐ์ค์ผ๋ก .์ ๊ผญ ์จ์ผํ๋ค
CMD ["python3", "์คํํ ํ์ผ.py"]
ex) Airflow
FROM python:3.7-slim-buster
ENV DEBIAN_FRONTEND noninteractive
# ์ด๋ฏธ์ง์๋ ์ต์ข
์ ์ฅ๋จ
ARG AIRFLOW_USER_HOME=/usr/local/airflow
ARG AIRFLOW_VERSION=1.10.9
COPY config/airflow.cfg ${AIRFLOW_USER_HOME}/airflow.cfg
# ๋น๋ํ ๋ ์คํ๋๋ ๋ช
๋ น
RUN chown -R airflow: ${AIRFLOW_USER_HOME}
EXPOSE 8080 5555 8793
USER airflow
WORKDIR ${AIRFLOW_USER_HOME}
# /entrypoint.sh webserver
ENTRYPOINT ["/entrypoint.sh"]
CMD ["webserver"]
Docker port forwarding
ํธ์คํธ(๋ณ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์๋ฒ)์ ์ปจํ ์ด๋๊ฐ ์ฌ๋ผ๊ฐ๋ ค๋ฉด ๋ณ๋์ ํฌํธ๋ก ์๋ก ์ฐ๋ํ ์ ์์ด์ผํ๋ค.
๋ฐ๋ผ์ ์คํ์ํฌ ๋ ์ฌ์ฉํ ๋ช ๋ น์ด docker run์ ์ถ๊ฐ์ ์ผ๋ก ์ต์ ์ ๋ฃ์ด ํฌํธํฌ์๋ฉ์ ์งํํ๋ค.
AWS Lambda, Docker, CloudWatch, Devops, ECS / ECR, ApiGateway
Docker ์ค์ต
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Redshift serverless ์์ฑํ๊ณ S3์ csv ํ์ผ Redshift์ COPYํ๊ธฐ - TIL230523 (0) | 2023.05.23 |
---|---|
๋ฐ์ดํฐ ํ๊ณผ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค - TIL230522 (2) | 2023.05.22 |
AWS CLI - TIL230518 (0) | 2023.05.19 |
AWS IAM, S3, CI/CD, ์ข ํฉ์ค์ต - TIL230517 (0) | 2023.05.17 |
AWS EC2 ๊ธฐ๋ณธ ์ฉ์ด ๋ฐ ์ธ์คํด์ค ์์ฑํ๊ธฐ(TIL 230515) (0) | 2023.05.15 |