Docker 이미지를 빠르게 생성하기 위해 Docker는 기본적으로 Build Cache를 활용합니다.
Cache는 이전에 생성한 Docker Layer를 재사용하여 빌드 시간을 줄여주는 중요한 기능입니다.
하지만 특정 상황에서는 Cache를 사용하면 문제가 발생할 수 있습니다.
예:
- 최신 패키지가 반영되지 않음
- 오래된 Layer 재사용
- 보안 업데이트 미적용
- Dockerfile 변경 사항 미반영
이럴 때 사용하는 옵션이 바로 **--no-cache**입니다.
docker buildx build --no-cache는 기존 Build Cache를 사용하지 않고 모든 단계를 처음부터 다시 실행하는 옵션입니다.
예:
docker buildx build \
--no-cache \
-t app:v1 .
이번 글에서는 Docker Buildx Build –no-cache의 개념부터 기본 사용법, Cache 초기화와 차이점, 보안 업데이트 활용, 실무 적용 방법까지 자세히 알아보겠습니다.
Docker Buildx Build –no-cache란 무엇인가?
--no-cache는 Docker 빌드 과정에서 기존 Cache Layer를 사용하지 않도록 설정하는 옵션입니다.
기본 빌드:
docker buildx build \
-t app:v1 .
동작:
기존 Layer 확인
↓
Cache 재사용
↓
빠른 빌드
Cache 비활성화:
docker buildx build \
--no-cache \
-t app:v1 .
동작:
모든 Layer 다시 생성
↓
새로운 이미지 생성
Docker Build Cache를 사용하는 이유
Docker 이미지는 여러 Layer로 구성됩니다.
예:
FROM node
COPY package.json .
RUN npm install
COPY . .
첫 번째 빌드:
Layer 생성
두 번째 빌드:
변경 없는 Layer 재사용
Cache 덕분에 빠른 빌드가 가능합니다.
Docker Buildx Build –no-cache는 언제 사용하는가?
다음 상황에서 사용합니다.
- 최신 패키지 반영
- 보안 업데이트 적용
- 빌드 문제 해결
- Cache 오류 확인
- 완전 새 이미지 생성
특히 운영 배포 전 새로 빌드할 때 유용합니다.
Docker Buildx Build –no-cache 기본 사용법
기본:
docker buildx build \
--no-cache \
-t app:v1 .
모든 Build Step이 다시 실행됩니다.
Docker Buildx Build –no-cache와 일반 빌드 차이
일반 빌드:
docker buildx build \
-t app:v1 .
결과:
Using cache
Cache를 활용합니다.
Cache 사용 안 함:
docker buildx build \
--no-cache \
-t app:v1 .
결과:
RUN command executed
모든 명령이 다시 실행됩니다.
Docker Buildx Build –no-cache와 Cache 삭제 차이
비슷해 보이지만 다릅니다.
–no-cache
현재 빌드에서만 Cache 사용 안 함
docker buildx build \
--no-cache .
Cache 자체는 남아 있습니다.
Cache 삭제
예:
docker builder prune
저장된 Cache를 제거합니다.
정리:
--no-cache = 사용 안 함
prune = 삭제
Docker Buildx Build –no-cache 실무 활용 예제
최신 패키지 설치
Dockerfile:
FROM ubuntu
RUN apt update && apt install nginx
일반 빌드:
docker buildx build \
-t nginx:test .
기존 Cache 때문에 최신 패키지가 반영되지 않을 수 있습니다.
해결:
docker buildx build \
--no-cache \
-t nginx:test .
최신 패키지 기준으로 다시 빌드됩니다.
보안 업데이트 적용
기존 이미지:
ubuntu:latest
보안 패치 적용 필요:
docker buildx build \
--no-cache \
-t secure-app:v2 .
전체 Layer를 다시 생성하여 최신 상태를 반영합니다.
Docker Buildx Build –no-cache CI/CD 활용
운영 배포 시:
docker buildx build \
--no-cache \
--platform linux/amd64 \
-t company/app:${VERSION} \
--push .
깨끗한 환경에서 새 이미지를 생성할 수 있습니다.
Linux 서버 문제 해결
Docker 이미지 빌드 후에도 문제가 계속 발생했습니다.
빌드:
docker buildx build \
-t app:v1 .
확인:
Using cache
이전 Layer가 계속 사용되고 있었습니다.
Cache 없이 다시 빌드:
docker buildx build \
--no-cache \
-t app:v1 .
결과:
새로운 Layer 생성
문제가 해결되었습니다.
Docker Buildx Build –no-cache는 Cache 관련 문제를 확인하는 가장 빠른 방법입니다.
Docker Buildx Build –no-cache 사용 시 주의사항
첫 번째는 빌드 시간이 증가합니다.
두 번째는 CI 비용이 증가할 수 있습니다.
세 번째는 모든 상황에서 사용할 필요가 없습니다.
네 번째는 반복 빌드에서는 Cache 활용이 더 효율적입니다.
Best Practice
Docker Buildx Build –no-cache 활용 방법:
- 문제 해결용으로 사용
- 보안 업데이트 시 활용
- 운영 배포 전 검증
- 일반 개발 빌드는 Cache 사용
- 필요할 때만 전체 재빌드
- 빌드 시간 비교 확인
자주 묻는 질문
Docker Buildx Build –no-cache는 무엇인가요?
기존 Docker Build Cache를 사용하지 않고 새로 빌드하는 옵션입니다.
–no-cache를 사용하면 Cache가 삭제되나요?
아닙니다.
현재 빌드에서만 Cache 사용을 건너뜁니다.
언제 사용하는 것이 좋은가요?
패키지 업데이트, 보안 패치, Cache 문제 해결 시 사용합니다.
항상 –no-cache를 사용하는 것이 좋나요?
아닙니다.
빌드 시간이 증가하기 때문에 필요한 경우에만 사용합니다.
마무리
Docker Buildx Build –no-cache는 기존 Cache를 무시하고 Docker 이미지를 새롭게 생성하는 중요한 옵션입니다.
일반적인 개발 환경에서는 Cache를 활용하는 것이 효율적이지만, 최신 패키지 반영이나 빌드 오류 해결, 보안 업데이트 적용이 필요한 경우에는 --no-cache가 매우 유용합니다.
Docker Buildx에서는 Cache를 무조건 비활성화하기보다 상황에 맞게 --cache-from, --cache-to, --no-cache를 적절히 활용하는 것이 안정적인 빌드 관리 방법입니다.