Quiz: Multi-stage Builds and Slimming
한국어 원문으로 표시합니다.
멀티스테이지로 바꿨는데 크기가 거의 안 줄었습니다. 가장 흔한 원인은?
- 스테이지 개수가 부족해서
- 최종 스테이지에서 빌더 디렉터리를 통째로 복사해서
- 캐시가 남아 있어서
- 베이스 이미지가 같아서
scratch 기반 이미지에서 HTTPS 호출이 x509: certificate signed by unknown authority 로 실패합니다. 원인은?
- 바이너리가 동적 링크됐다
- CA 인증서 번들이 이미지에 없다
- 시간이 안 맞다
- 네트워크가 막혔다
알파인 베이스가 오히려 손해가 되는 대표적 상황은?
- 최종 이미지 크기가 오히려 더 커져 버릴 때
- 이미지 레이어 수가 많을 때
- 컨테이너를 루트로 실행할 때
- musl 용 바이너리 휠이 없어 소스 컴파일로 넘어가 CI 시간이 폭증할 때
--target 옵션의 실용적 쓰임새는?
- 최종 이미지를 한 단계 더 작게 만들어 준다
- 여러 스테이지 빌드를 병렬로 돌린다
- 중간 스테이지까지만 빌드해 디버깅하거나 테스트 전용 이미지를 뽑는다
- 빌드 캐시를 비우고 새로 만든다
이미지 최적화의 성과를 무엇으로 검증하는 것이 가장 타당합니까?
- 콜드 스타트 풀 시간과 롤링 업데이트 시 새로 받는 레이어 비율
- 이미지 전체 크기(MB) 숫자
- 이미지의 레이어 개수
- CI 에서 걸린 빌드 시간
RUN apt-get purge 로 빌드 도구를 지웠는데 이미지가 2.1MB 늘었습니다. 왜입니까?
- 삭제 표식과 갱신된 패키지 DB 가 새 레이어에 기록되고, 아래 레이어의 원본은 그대로 남아서
- purge 가 apt 캐시를 그대로 남기기 때문에
- 레이어 압축이 풀린 채로 저장돼서
- 레이어 메타데이터가 그만큼 늘어나서