You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions中缓存与重新加载Docker镜像?

在GitHub Actions中缓存自定义Docker镜像的实现方法

完全可行,通过结合GitHub官方的actions/cache Action和docker save/docker load命令就能实现自定义镜像的缓存,避免每次构建重复下载大体积镜像。具体实现步骤如下:

核心思路

  1. 用docker save将镜像导出为本地tar文件
  2. 通过actions/cache将tar文件缓存到GitHub的缓存系统中
  3. 下次构建时先尝试从缓存加载tar文件,用docker load导入镜像;如果缓存不存在,再重新拉取镜像并保存到缓存

完整Workflow示例

name: Build with cached Docker image

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      # 定义缓存key,建议用镜像标签+哈希值,确保镜像更新时缓存自动失效
      - name: Set cache key
        id: cache-key
        run: echo "key=my-custom-image-v1-${{ hashFiles('path/to/your/Dockerfile') }}" >> $GITHUB_OUTPUT

      # 加载缓存的镜像tar文件
      - name: Restore Docker image cache
        uses: actions/cache@v3
        id: cache
        with:
          path: ./my-custom-image.tar
          key: ${{ steps.cache-key.outputs.key }}
          restore-keys: |
            my-custom-image-v1-

      # 尝试从缓存加载镜像,失败则拉取镜像
      - name: Load or pull Docker image
        run: |
          if [ -f ./my-custom-image.tar ]; then
            docker load < ./my-custom-image.tar
          else
            docker pull your-registry/my-custom-image:v1
          fi

      # 执行你的构建任务
      - name: Run build
        run: |
          docker run --rm your-registry/my-custom-image:v1 your-build-command

      # 如果缓存不存在,保存镜像到tar文件供下次缓存
      - name: Save Docker image to cache
        if: steps.cache.outputs.cache-hit != 'true'
        run: docker save your-registry/my-custom-image:v1 > ./my-custom-image.tar

关键细节说明

  • 缓存Key设计:用hashFiles('path/to/your/Dockerfile')可以保证当Dockerfile修改时,缓存自动失效,重新拉取/构建新镜像;如果是直接拉取现成镜像,也可以用镜像的digest作为key,避免标签被覆盖导致缓存失效。
  • 缓存路径:指定保存镜像tar文件的路径,确保docker save和actions/cache的路径一致。
  • 缓存命中判断:通过steps.cache.outputs.cache-hit判断是否命中缓存,只有未命中时才执行docker save,避免重复操作。
  • 大体积镜像处理:GitHub缓存支持最大10GB的文件,2GB的镜像完全符合要求,但注意缓存的保留时间(默认90天),如果镜像更新不频繁,缓存可以长期复用。

内容的提问来源于stack exchange,提问作者behnam rahmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:02:05