캐시 워밍으로 Docker 빌드 시간 단축
이 게시물에서는 원격 도커 레지스트리를 사용하여 도커 캐시를 준비하고 로컬 빌드 속도를 높이는 방법을 살펴보겠습니다. 이는 CI에서도 매우 유용할 수 있습니다.
도커에서 캐시를 따뜻하게 하는 방법
Docker 1.13부터 작은 트릭을 사용할 수 있습니다.
--cache-from
플래그를 사용하여 docker가 다른 이미지의 레이어를 캐시로 사용하도록 지시할 수 있습니다. 유일한 전제 조건은 이미지가 로컬에 있어야 한다는 것입니다.빌드하고 푸시하는 Dockerfile이 로컬에 있다고 가정해 보겠습니다.
$ docker build -t my-docker .
$ docker push my-docker
이제 다른 머신이나 CI에서 my-docker를 다시 빌드하려고 합니다. 여기에서 도커 레지스트리에 푸시한 이미지를 사용하여 빌드 속도를 높일 수 있습니다.
$ docker pull my-docker || true
$ docker build --cache-from my-docker .
이미지가 푸시되지 않은 경우 실패를 방지하기 위해
|| true
를 사용하고 이미지를 빌드의 캐시로 사용합니다.Buildkit으로 캐시를 워밍하는 방법
기존 방식에서는 빌드를 실행하기 전에 이미지를 가져와야 합니다. Buildkit 및
BUILDKIT_INLINE_CACHE
를 사용하여 이를 피할 수 있습니다. how to set up Buildkit on your machine.의 이전 게시물에서 확인하실 수 있습니다.캐시와 함께 실제로 필요한 것은 캐시 메타데이터가 포함된 JSON입니다. Buildkit을 사용하여 Docker 빌드를 실행하고 Docker 이미지에 캐시 정보를 추가할 수 있습니다.
$ export DOCKER_BUILDKIT=1
$ docker build -t my-docker --build-arg BUILDKIT_INLINE_CACHE=1 .
$ docker push my-docker
여기에서
export DOCKER_BUILDKIT=1
로 Buildkit을 활성화한 다음 빌드 중에 --build-arg BUILDKIT_INLINE_CACHE=1
를 사용합니다. 이 시점에서 빌드된 이미지는 다른 빌드의 캐시로 사용할 수 있습니다.그런 다음 이전과 동일한 구문을 사용하여 다른 시스템이나 CI에서 빌드를 실행할 수 있습니다.
$ docker build --cache-from my-docker .
이번에는 빌더가 원격 이미지에서 사용할 수 있는 캐시가 있는지 확인하기 위해 레지스트리에서 JSON 메타데이터를 가져오는 것입니다. 캐시 적중이 있는 경우 필요한 레이어만 로컬에서 가져오고 빌더에서 사용합니다.
이거 야!
이 게시물에서는 다른 이미지를 사용하여 Docker 빌드 캐시를 워밍업하는 방법을 살펴보았습니다. 이 기술은 빌드 시간을 단축하는 데 도움이 됩니다.
빌드 시간을 단축할 수 있는 다른 방법을 찾고 있다면 multistage parallel Docker build 을 사용해 볼 수 있습니다.
Twitter에서 저에게 연락하고 여러분의 생각을 알려주세요!
이 문서는 원래 my blog에 게시되었습니다. 이 게시물이 마음에 들고 다른 사람들이 좋아하는 글을 읽고 싶다면 여기로 가세요!
Reference
이 문제에 관하여(캐시 워밍으로 Docker 빌드 시간 단축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gasparev/speed-up-docker-build-time-with-cache-warming-29on텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)