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

如何利用GHA Docker缓存加速GitHub Actions上的Docker构建与拉取运行

核心原因

你配置的cache-to/cache-from是Docker Buildx的构建层缓存,仅用于加速镜像构建过程,不会自动将构建完成的镜像加载到GitHub Actions运行环境的本地Docker daemon镜像列表中。因此执行docker run时识别不到本地存在对应镜像,就会主动从Registry拉取。

解决方法

场景1:构建和docker run在同一个Job内执行

这是最常见的场景,直接在docker/build-push-action配置中添加load: true参数即可,该参数会将构建完成的镜像直接加载到本地Docker daemon中,后续docker run会优先使用本地镜像,不会触发拉取操作。
示例配置:

- name: Build Docker image
  uses: docker/build-push-action@v5
  with:
    context: .
    tags: ghcr.io/org/image:new-tag
    cache-from: type=gha
    cache-to: type=gha,mode=max
    # 新增以下参数
    load: true

如果需要同时将镜像推送到Registry,需额外添加provenance: false参数(默认生成的多架构 attestation 镜像不支持同时load和push):

- name: Build and push Docker image
  uses: docker/build-push-action@v5
  with:
    context: .
    tags: ghcr.io/org/image:new-tag
    cache-from: type=gha
    cache-to: type=gha,mode=max
    load: true
    push: true
    provenance: false

场景2:构建和docker run在不同Job内执行

此时不同Job的运行环境隔离,本地Docker daemon不共享,你可以将构建好的镜像导出为tar包,通过GHA缓存存储,在执行run的Job中导入镜像即可:

构建Job配置示例

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build Docker image
        uses: docker/build-push-action@v5
        with:
          context: .
          tags: ghcr.io/org/image:new-tag
          cache-from: type=gha
          cache-to: type=gha,mode=max
          outputs: type=docker,dest=/tmp/my-image.tar
      - name: Upload image to cache
        uses: actions/cache@v3
        with:
          path: /tmp/my-image.tar
          key: docker-image-${{ github.sha }}

运行Job配置示例

run:
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Load image from cache
        uses: actions/cache@v3
        with:
          path: /tmp/my-image.tar
          key: docker-image-${{ github.sha }}
      - name: Import image to local Docker
        run: docker load -i /tmp/my-image.tar
      - name: Run command in image
        run: docker run ghcr.io/org/image:new-tag command

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:48:01