Docker 캐시 무효화를 디버깅하는 방법?


15

Docker에는 캐시가 있지만 "docker build"출력에서 볼 수있는 것은 다음 중 하나입니다.

---> Using cache

또는 명령의 출력 (캐시를 사용하지 않음을 의미).

Dockerfile (COPY)에서 한 단계 후에 캐시를 사용하지 않습니다. 그러나 나는 복사중인 폴더에서 아무것도 바뀌지 않았다고 확신합니다. (이것은 우리의 응용 프로그램이며, 예를 들어 연속으로 두 번 배포 할 때도 캐시가없는 경우가 발생합니다.)

Docker가 변경 된 것으로 생각하게하는 방법이 있습니까?

Docker가 타임 스탬프를 확인하는 데 사용했지만 Docker 1.8에서 수정되었으며 Docker 1.9.x에 있습니다.


당신의 게시하시기 바랍니다Dockerfile
조엘 E 살라스

1
@JoelESalas : 귀하의 요청을 이해하지 못합니다. FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/이것을 보여주는 간단한 것. 그리고 전체 소스 코드와 인프라를 게시하지는 않겠습니다.
Timmay

1
또한 Dockerfile을 보면 도움이 될 수 있지만 문제는 어떻게 그러한 문제를 진단 합니까 ? 다른 사람 이 내 구성을보고 답변을 말하고 싶지 않습니다 . 문제를 해결하는 데 도움이되는 도구가 무엇인지 알고 싶습니다.
Timmay

해당 디렉토리에서 아무것도 변경되지 않았습니까?
Joel E Salas

답변:


4

이진 검색을 사용하십시오 .dockerignore.

에 파일의 절반을 추가 .dockerignore하고 컨테이너를 빌드하십시오. COPY단계에 대해 캐시를 사용하는 경우 변경된 파일이 무시한 세트에 있음을 알고, 그렇지 않으면 나머지 절반에 있음을 알 수 있습니다. 하나의 파일 / 폴더가 될 때까지 변경이있는 파일 세트로이 테스트를 반복하십시오.

(lazyweb에게 : Docker를 확장하여 고통을 덜 줄 수있는 방법을 찾으십시오!)


2
로컬로 무언가를 디버깅하는 데 괜찮은 접근 방식입니다. 제 경우에는 현재 CI 환경에서 Docker 캐시를 디버깅하려고하는데 Docker 빌드를 더 장황하게 만드는 방법을 찾지 못하는 것 같습니다. = /
elias
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.