도커 이미지 용량 줄이는 팁 있나요?
간단한 파이썬 앱인데 이미지가 1.4GB 나옵니다. 멀티스테이지 빌드 쓰면 확 줄어든다고 해서 찾아보는 중인데 실무에서들 얼마나 줄이시는지 궁금합니다.
8 개의 답변
파이썬 앱이 1.4GB면 거의 대부분 base 이미지가 범인임. python:3.12 풀 이미지 대신 -slim이나 alpine 쓰는 것만으로도 절반 넘게 줄어드는 경우 많아요.
멀티스테이지보다 base 이미지 교체가 먼저임ㅋㅋ 순서 바꿔서 해보세요
출처 있음? '멀티스테이지 쓰면 확 줄어든다'는 말만 보고 따라하면 컴파일러랑 빌드 캐시 다 딸려 들어가서 오히려 커지는 케이스도 봤는데.
저도 그거 궁금했는데 댓글들 참고해야겠네요 감사합니다
실무 기준으로 말하면, 요즘은 이미지 크기 자체보다 레이어 캐싱 잘 되게 순서 짜는 게 더 중요해진 것 같아요. requirements.txt 먼저 COPY하고 pip install 후에 소스 COPY하는 식으로. 크기 줄이는 건 dive 같은 걸로 레이어별 용량 찍어보면 어디서 새는지 바로 보입니다. 빌드 도구는 multi-stage에서 빼고요.
1.4GB면 뭔가 잘못된 거 맞음ㅋㅋ 저희 파이썬 소규모 서비스는 slim + 멀티스테이지로 200MB 초반 나옵니다. 근데 무조건 alpine이 정답은 아니에요, 위에 분 말대로 빌드 이슈 터지면 생산성 날아갑니다.
동의 안 됨. 용량 줄이는 데만 집중하면 디버깅할 때 컨테이너 들어가서 볼 게 없어져서 오히려 시간 잡아먹는 경우 많아요. 운영용이랑 디버그용 태그 나눠서 관리하는 걸 추천.
글쎄요, alpine은 musl 때문에 pip로 C 확장 들어가는 패키지(numpy, pandas 같은 거) 빌드하다 지옥 보는 경우 많습니다. 저희는 slim 쓰고 빌드용/런타임용 스테이지 나눠서 최종 이미지 180MB 정도로 쓰고 있어요. .dockerignore에 .git, __pycache__, venv 안 넣는 것도 은근 큽니다.