본문 바로가기

Programming/RaspberryPi

[Docker] Docker 이미지 빌드속도 향상

반응형

 

https://tech.cloudmt.co.kr/2022/11/08/container-imagesize-diet/

 

컨테이너 이미지 용량 줄이기

문서 작성의 이유 이제는 필수가 된 Dockerfile을 잘 작성하는 것 만으로도 Container의 이미지 사이즈를 줄일 수 있다. 이 말은 Dockerfil

tech.cloudmt.co.kr

 

기존에 만들었던 rigizer/qbittorrent-telegrambot:latest 이미지를 빌드할 때 용량을 줄이는 법을 알아내고자 구글링을 하고 있었다.

그러던 와중 한 블로그 글을 찾게되는데, dockerfile의 순서를 몇개만 바꾸어주어도 빌드 속도가 향상된다는 것이다.

 

우선 기존 dockerfile에 대해, 빌드 시간은 다음과 같았다. (120초 == 2분)

FROM python:3.12

COPY . /app
WORKDIR /app

RUN pip install -r requirements.txt

EXPOSE 8080

CMD ["python", "/app/app.py"]

 

 

그리고 글을 참고하여 dockerfile을 수정하였고, 이에 따른 빌드 시간은 다음과 같았다. (16초, 기존 대비 약 7.5배 빨라짐!)

FROM python:3.12

EXPOSE 8080

COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt

COPY . /app

CMD ["python", "/app/app.py"]

 

 

Dockerfile을 작성함에 있어 명령어에 따라 이미지 Layer가 쌓이는데, 명령어 순서에 따라 이미지가 생성되는 구조가 달라지게 된다는 것이다.

이미지 생성 시간에 대해 반복되는 부분은 최소화하고, 많이 바뀌는 부분에 대해 나중의 명령어로 순서를 치환하게 되면, 기존 requirements에 대해 다운로드 받고 이미지 레이어를 재생성하는 시간을 단축시킬 수 있는 것이다.

 

그러면, 기존 이미지 레이어를 재사용하고, docker 이미지 빌드 시간을 획기적으로 단축시킬 수 있다.

 

새로운 사실을 하나 또 알아간다.

반응형