설명
Alpine 기반 이미지에서 apk add를 실행하면 설정에 따라 패키지 인덱스와 캐시 파일이 이미지에 남을 수 있습니다. 런타임에 필요 없는 파일은 이미지 크기와 저장·전송 비용을 늘립니다.
이는 직접적인 보안 취약점보다는 이미지 관리와 운영 효율에 관한 사항입니다. 최종 이미지 밖의 빌드 캐시를 사용하는 경우처럼 캐시 유지가 적절한 구성도 있습니다.
잠재적 영향
- 불필요한 캐시가 포함되면 이미지 저장 공간과 배포 시간이 늘어날 수 있습니다.
- 캐시를 무조건 없애면 반복 빌드의 다운로드 비용이 늘어날 수 있습니다.
해결 방법
- 캐시가 최종 이미지에 남는 일반적인 apk add에는 --no-cache를 사용하거나, 필요한 빌드 캐시는 이미지 밖에서 관리하세요.
- 최종 이미지에 남은 파일을 확인하세요. --no-cache는 해당 명령의 로컬 캐시 사용을 피하는 옵션이며 이전 레이어의 캐시를 지워 주지는 않습니다.
예시
기존 Alpine 3.20 예제는 캐시 사용만 비교합니다. 실제 빌드에서는 지원 중인 베이스와 패키지 저장소를 사용하세요.
변경 전
dockerfile
FROM alpine:3.20
RUN apk add --update-cache python3
변경 후
dockerfile
FROM alpine:3.20
RUN apk add --no-cache python3
설명:
- 변경 전: --update-cache로 인덱스를 갱신하며 캐시가 이미지에 남을 수 있습니다.
- 변경 후: --no-cache로 로컬 캐시를 사용하지 않고 설치합니다. 이미 존재하는 캐시까지 삭제하는 명령은 아닙니다.