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

如何在GitHub Actions跨Job使用未推送的Docker工具镜像构建新镜像

问题分析

你遇到的核心问题是:Docker Buildx 默认使用的 docker-container 驱动是隔离运行的,它无法直接访问宿主 Docker daemon 中加载的镜像。你在第二个 Job 里用 docker load 把工具镜像加载到了本地 daemon,但 docker/build-push-action 依赖 Buildx 构建时,因为驱动隔离,找不到 tools:latest 镜像,导致 COPY --from 指令执行失败。

解决方案

以下两种方法都能解决这个问题,任选其一即可:

方法一:让 Buildx 使用本地 Docker daemon(切换驱动)

修改第二个 Job 中的「Set up Docker Buildx」步骤,指定使用 docker 驱动,这样 Buildx 会直接复用本地 Docker daemon 的镜像,就能访问到你加载的 tools:latest:

jobs:
  build-uses-tools:
    needs: build-tools
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repo
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
        with:
          driver: docker  # 关键:切换到docker驱动

      - name: Download tools image artifact
        uses: actions/download-artifact@v3
        with: 
          name: tools-image
          path: /tmp

      - name: Load tools image artifact
        run: |
          docker load --input /tmp/tools.tar
          docker image ls -a

      - name: Build uses tools image
        uses: docker/build-push-action@v4
        with:
          load: true
          context: uses-tools

方法二:将工具镜像导入 Buildx 构建器

如果不想修改 Buildx 驱动,可以在加载镜像后,用 buildx imagetools import 把工具镜像导入到 Buildx 的构建器环境中,让 Buildx 能访问到它:

jobs:
  build-uses-tools:
    needs: build-tools
    runs-on: ubuntu-latest
    steps:
      - name: Checkout the repo
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Download tools image artifact
        uses: actions/download-artifact@v3
        with: 
          name: tools-image
          path: /tmp

      - name: Load tools image artifact
        run: |
          docker load --input /tmp/tools.tar
          docker image ls -a

      # 新增步骤:将镜像导入Buildx构建器
      - name: Import tools image to Buildx
        run: docker buildx imagetools import /tmp/tools.tar

      - name: Build uses tools image
        uses: docker/build-push-action@v4
        with:
          load: true
          context: uses-tools
验证

修改后重新运行工作流,第二个 Job 的「Build uses tools image」步骤就能成功找到 tools:latest 镜像,完成 COPY --from 操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:05:32