How to Enable Docker layer caching in Azure DevOps

后端 未结 3 934
日久生厌
日久生厌 2021-02-09 14:20

I am running the below yaml script to build docker images and push into kubernetes cluster but at the same time I wanted to enable docker layer caching in the azure DevOps while

3条回答
  •  长情又很酷
    2021-02-09 15:05

    Edit: as pointed out in the comments, this feature is actually available without BuildKit. There's an example here on how to use a Docker image as the cache source during a build.

    By adding the variable DOCKER_BUILDKIT: 1 (see this link) to the pipeline job and installing buildx, I managed to achieve layer caching by storing the cache as a separate image. See this link for some basics

    Here's an example step in Azure DevOps

    - script: |
        image="myreg.azurecr.io/myimage"
        tag=$(Build.SourceBranchName)-$(Build.SourceVersion)
        cache_tag=cache-$(Build.SourceBranchName)
    
        docker buildx create --use
        docker buildx build \
          -t "${image}:${tag}"
          --cache-from=type=registry,ref=${image}:${cache_tag}\
          --cache-to=type=registry,ref=${image}:${cache_tag},mode=max \
          --push \
          --progress=plain \
          .
      displayName: Build & push image using remote BuildKit layer cache
    

    This of course will require each run to download the image cache, but for images that have long-running installation steps in the Docker build process this is definitely faster (in our case from about 8 minutes to 2).

提交回复
热议问题