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

Windows自托管GitHub Action推送Docker镜像至GHCR失败

解决Windows自托管Runner推送镜像到GHCR的x509证书问题

问题分析

日志中的x509: certificate signed by unknown authority表明Docker Buildx在推送镜像时无法验证GHCR的SSL证书。虽然本地Docker可以正常操作,但GitHub自托管Runner默认使用的docker-container驱动环境没有继承主机的证书配置,导致证书验证失败。

解决方案

1. 切换Buildx使用Docker主机驱动

将Buildx的驱动从默认的docker-container改为docker,让Buildx直接复用主机Docker daemon的证书配置,和本地操作环境保持一致:

修改YAML中的Set up Docker Buildx步骤:

- name: Set up Docker Buildx
  uses: docker/setup-buildx-action@v1
  with:
    driver: docker

2. 检查Runner账户的证书存储

如果上述方法无效,确认Runner运行的系统账户已导入必要的根证书:

  • 若Runner使用普通用户账户,打开certmgr.msc(用户证书管理器)
  • 若Runner使用系统账户,打开certlm.msc(本地机器证书管理器)
  • 将GHCR的SSL证书或企业代理的根证书导入到受信任的根证书颁发机构目录下

3. 临时禁用证书验证(仅测试用)

若需快速验证问题是否由证书引起,可在构建步骤中临时关闭证书验证(不建议生产环境使用):

- name: Build and push
  uses: docker/build-push-action@v3
  with:
    context: .
    push: true
    file: docker/Dockerfile
    target: main
    tags: ghcr.io/<name>/<image-name>:latest
    cache-from: type=registry,ref=ghcr.io/<name>/<image-name>:latest
    cache-to: type=inline
    build-args: |
      --tlsverify=false

验证

修改配置后重新触发Action,检查镜像推送步骤是否成功。

内容的提问来源于stack exchange,提问作者Kevin Z.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 14:30:07