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

如何配置Drone Docker插件使用自签名证书访问私有镜像仓库

问题根因

之前的配置存在两个核心认知错误:

  • 通过流水线临时卷docker-cert-persistence写入的证书,仅存在于当前流水线各步骤的独立容器文件系统内,既没有写入宿主机Docker的证书目录,也没有被plugins/docker插件内置的Docker进程正确加载
  • 尝试挂载证书到插件容器/etc/docker/certs.d/路径的操作,对plugins/docker默认的Docker-in-Docker运行模式不生效:插件启动时会先拉起内置的dockerd进程,该进程读取的CA信任存储是容器内的系统CA库,不会读取挂载到临时卷里的证书文件。

可行配置方案(无需开启insecure非安全模式)

以下方案任选其一即可,优先选择第一种,配置成本最低:

方案1:使用插件原生CA证书参数

plugins/docker原生支持自定义CA证书传入,不需要额外加拷贝证书的流水线步骤,直接修改镜像推送步骤的配置即可:

- name: push-built-image
  image: plugins/docker
  volumes:
    - name: host-certs
      path: /custom-certs
  settings:
    repo: docker-registry.scubbo.org:8843/scubbo/blog_nginx
    tags: built_in_ci
    debug: true
    # 指定CA证书路径,插件启动时会自动将证书加入系统信任库
    ca: /custom-certs/live/docker-registry.scubbo.org/fullchain.pem

这里直接使用Drone Runner启动时已经挂载的/custom-certs证书目录即可,不需要通过临时卷在步骤间传递文件。

方案2:预构建集成私有CA的自定义插件镜像

如果有多条流水线需要用到该私有仓库,可以提前把CA证书打包进插件镜像,避免每次重复配置:

  1. 编写Dockerfile:
FROM plugins/docker:latest
COPY fullchain.pem /usr/local/share/ca-certificates/registry-ca.crt
RUN update-ca-certificates
  1. 构建自定义镜像推送到可访问的镜像仓库,后续所有推送步骤直接使用这个自定义镜像即可,不需要额外挂载证书或传参。

方案3:使用宿主机Docker模式的配置方式

如果插件配置了daemon: false强制通过挂载的宿主机Docker Socket执行操作,那流水线内的证书拷贝操作完全无效——这种模式下执行镜像推送的是宿主机上的dockerd进程,只需要提前把CA证书放到宿主机的/etc/docker/certs.d/docker-registry.scubbo.org:8843/ca.crt路径下即可,流水线内不需要做任何证书相关操作。


注意事项
  • 普通HTTPS单向认证场景下,只需要放置CA证书(即Certbot生成的fullchain.pem或chain.pem)即可,不需要拷贝privkey.pem、cert.pem这类客户端证书文件,多余配置反而可能触发TLS握手异常。
  • 配置完成后重新运行流水线即可正常完成TLS校验,不会再抛出x509未知签发者错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:54:15