InfoGrab Docs

Docker 레이어 캐싱으로 Docker-in-Docker 빌드 속도 향상

Docker 레이어 캐싱으로 Docker-in-Docker 빌드 속도 향상에 대해 설명합니다.

Docker-in-Docker를 사용할 때 Docker는 빌드를 생성할 때마다 이미지의 모든 레이어를 다운로드합니다. 최신 버전의 Docker(Docker 1.13 이상)는 docker build 단계에서 기존 이미지를 캐시로 사용할 수 있습니다. 이는 빌드 프로세스를 크게 가속화합니다. Docker 27.0.1 이상에서 기본 docker 빌드 드라이버는 containerd 이미지 저장소가 활성화된 경우에만 캐시 백엔드를 지원합니다. Docker 27.0.1 이상에서 Docker 캐싱을 사용하려면 다음 중 하나를 수행합니다: Docker 데몬 구성에서 containerd 이미지 저장소를 활성화합니다. 다른 빌드 드라이버를 선택합니다. 자세한 내용은 캐시 스토리지 백엔드 를 참조하세요. Docker 캐싱 작동 방식 # docker build 를 실행할 때 Dockerfile 의 각 명령은 레이어를 생성합니다. 이러한 레이어는 캐시로 유지되며 변경 사항이 없는 경우 재사용할 수 있습니다. 한 레이어의 변경은 이후 모든 레이어의 재생성을 유발합니다. docker build 명령에 대한 캐시 소스로 사용할 태그된 이미지를 지정하려면 --cache-from 인수를 사용합니다. 여러 --cache-from 인수를 사용하여 여러 이미지를 캐시 소스로 지정할 수 있습니다. Docker 인라인 캐싱 예시 # 이 예시 .gitlab-ci.yml 파일은 기본 docker build 명령을 사용하여 inline 캐시 백엔드로 Docker 캐싱을 사용하는 방법을 보여줍니다. default: image: docker:27.4.1-cli services: - docker:27.4.1-dind before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY variables: # Use TLS https://docs.gitlab.com/ci/docker/using_docker_build/#tls-enabled DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" build: stage: build script: - docker pull $CI_REGISTRY_IMAGE:latest || true - docker build --build-arg BUILDKIT_INLINE_CACHE=1 --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA - docker push $CI_REGISTRY_IMAGE:latest build job의 script 섹션에서: 첫 번째 명령은 docker build 명령에 대한 캐시로 사용할 수 있도록 레지스트리에서 이미지를 가져오려고 시도합니다. --cache-fr