如何使用我的“gha”Docker 缓存来加速 Docker pull 以及在 Github Actions 上构建 Docker?

Jos*_*hua 18 continuous-integration caching docker github-actions buildx

在 Github Actions 上,当我将新构建的 Docker 镜像放在缓存中时,我希望避免从注册表中提取该镜像(这是我工作中最慢的部分)

我的工作流程是这样的

  1. 构建一个图像(包含我所有的依赖项)
  2. 在上图中运行命令

根据Docker Build Push Action 文档,设置cache-tocache-from指向gha有助于加快步骤 1 的速度。

然而,当我跑步时docker run ghcr.io/org/image:new-tag command,它总是以

Unable to find image 'ghcr.io/org/image:new-tag' locally
new-tag: Pulling from org/image
...
5402d6c1eb0a: Pulling fs layer
...
Run Code Online (Sandbox Code Playgroud)

这大约需要 50 秒(总作业时间约为 75 秒)。

当存在包含此信息的缓存时,这似乎是不必要的,但是我不知道如何告诉我的docker run命令如何使用此缓存,因为据我所知,--cache-from=ghadocker run 没有等效的选项。

当我在 Github Actions 上调用 docker run 时,如何告诉 docker 在 gha 缓存中查找图像?

小智 4

我们之前也遇到过类似的情况,但最近我们发现了一个 github-actions,它实际上有助于缓存后续运行的 docker-layers 和图像。

我相信您的问题也可以用它来解决。这是 gh-action 的链接https://github.com/satackey/action-docker-layer-caching

配置示例 您可以在 docker run 步骤上方添加以下行,以确保在 gha 中完成缓存

    - uses: satackey/action-docker-layer-caching@v0.0.11
      continue-on-error: true
Run Code Online (Sandbox Code Playgroud)