설명
FROM alpine:latest의 latest는 게시자가 지정하는 변경 가능한 태그이며 가장 최근 이미지라는 보장은 없습니다. 이 태그가 다른 이미지를 가리키면 같은 Dockerfile을 다시 빌드해도 결과가 달라질 수 있습니다.
이 방식은 재현 가능한 빌드를 어렵게 하고, 예상하지 못한 변경을 운영 환경에 반영하게 만들 수 있습니다. 구체적인 버전 태그는 의도한 릴리스 계열을 나타내지만 그 태그도 변경될 수 있습니다. image:latest@sha256:...처럼 확인한 다이제스트를 지정하면 선택되는 이미지 내용이 고정됩니다.
잠재적 영향
- 이미지 저장소가 갱신될 때마다 다른 베이스 이미지가 적용될 수 있습니다.
- 갑작스러운 버전 변경으로 애플리케이션 호환성 문제가 생길 수 있습니다.
- 장애 원인 분석과 롤백이 어려워집니다.
해결 방법
latest대신 구체적인 버전 태그를 사용하세요.- 운영 환경, 테스트 환경 등 용도에 맞는 명확한 태그 정책을 정하세요.
- 중요한 이미지에는 태그와 함께 다이제스트를 지정하세요.
latest라는 태그가 남아 있어도 다이제스트가 붙으면 선택되는 이미지 내용은 고정됩니다.
예시
변경 전
dockerfile
FROM alpine:latest
변경 후
dockerfile
FROM alpine:3.22
설명:
- 변경 전:
latest는 고정된 버전이 아니어서 빌드 결과가 쉽게 달라질 수 있습니다. - 변경 후: 의도한 릴리스 계열을 지정합니다. 정확한 내용 고정에는 다이제스트를 사용하고, 고정한 이미지의 보안 업데이트도 계속 반영하세요.