InfoGrab Docs

Docker-in-Docker 빌드에서 Docker 레이어 캐싱

Docker-in-Docker 빌드에서 Docker 레이어 캐싱에 대해 설명합니다.

Docker-in-Docker를 사용할 때 Docker는 빌드할 때마다 이미지의 모든 레이어를 다운로드합니다. Docker 1.13 이상은 docker build 단계에서 기존 이미지를 캐시로 사용할 수 있어 빌드 프로세스가 크게 빨라집니다. Docker가 docker build 를 실행할 때 각 Dockerfile 명령은 레이어를 생성합니다. Docker는 이 레이어를 캐시로 보존하고 변경 사항이 없으면 재사용합니다. 한 레이어가 변경되면 이후 모든 레이어가 재빌드됩니다. docker build 의 캐시 소스로 태그된 이미지를 사용하려면 --cache-from 인수를 전달합니다. 여러 캐시 소스를 지정하려면 --cache-from 을 여러 번 사용합니다. 사전 조건 # Docker 27.0.1 이상에서 기본 docker 빌드 드라이버는 containerd 이미지 저장소가 활성화된 경우에만 캐시 백엔드를 지원합니다. 다음 중 하나를 수행합니다: Docker 데몬 구성에서 containerd 이미지 저장소를 활성화합니다. 다른 빌드 드라이버를 선택합니다. 인라인 캐싱 사용 # 기본 docker build 명령과 함께 inline 캐시 백엔드를 사용합니다. 캐싱을 시작하는 가장 간단한 방법입니다. 캐시는 별도의 캐시 이미지 없이 이미지 자체에 저장됩니다. 복잡한 빌드 흐름이나 멀티 스테이지 빌드의 경우, 대신 레지스트리 캐싱 을 사용하세요. 자세한 내용은 인라인 캐싱 옵션 을 참조하세요. Note --build-arg BUILDKIT_INLINE_CACHE=1 인수는 필수입니다. 이 인수는 Docker가 이미지에 캐시 메타데이터를 내장하도록 지시하여 이후 빌드에서 --cache-from 으로 캐시 소스로 사용할 수 있게 합니다. 이 인수 없이는 캐싱이 자동으로 실패합니다. 파이프라인에서 인라인 캐싱을 사용하려면: 프로젝트에 다음 .gitlab-ci.yml 구성을 추가합니다: 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