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

在Distroless Docker镜像运行时更新ca-certificates

在Docker容器运行期间执行update-ca-certificates的方案

一、常规Debian/Ubuntu系容器(带完整shell和工具链)

这类镜像默认自带update-ca-certificates工具,按以下步骤操作:

  1. 将自定义证书传入容器
    可通过挂载主机文件或容器运行后复制的方式,将证书放到指定目录:

    • 挂载方式启动容器:
      docker run -v /本地路径/自定义证书.crt:/usr/local/share/ca-certificates/自定义证书.crt 你的镜像名 bash -c "update-ca-certificates && 你的主启动命令"
      
    • 容器运行中传入证书:
      先进入容器:
      docker exec -it 容器ID/名称 bash
      
      从主机复制证书到容器内目录:
      docker cp /本地路径/自定义证书.crt 容器ID/名称:/usr/local/share/ca-certificates/
      
  2. 执行证书更新
    在容器内执行命令:

    update-ca-certificates
    

    成功执行后会输出类似Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done.的提示,新证书随即生效。

二、Distroless镜像(无shell和工具链)

Distroless镜像默认没有update-ca-certificates和shell,需要手动处理证书:

  1. 准备PEM格式证书
    确保自定义证书为PEM格式(后缀通常为.crt或.pem),若不是可通过以下命令转换:

    openssl x509 -in 原证书文件 -out 目标文件.crt -outform PEM
    
  2. 挂载证书并生成哈希链接

    • 挂载证书到容器的/etc/ssl/certs/目录:
      docker run -v /本地路径/自定义证书.crt:/etc/ssl/certs/自定义证书.crt 你的distroless镜像名
      
    • 生成证书哈希链接(确保系统能识别证书):
      若容器内带openssl工具,可在启动命令中添加:
      docker run -v /本地路径/自定义证书.crt:/etc/ssl/certs/自定义证书.crt 你的distroless镜像名 sh -c "ln -s /etc/ssl/certs/自定义证书.crt /etc/ssl/certs/$(openssl x509 -hash -noout -in /etc/ssl/certs/自定义证书.crt).0 && 你的主启动命令"
      
      若没有sh和openssl,可在主机预先计算哈希值:
      openssl x509 -hash -noout -in 自定义证书.crt
      
      得到哈希值后,挂载时同时挂载链接文件:
      docker run -v /本地路径/自定义证书.crt:/etc/ssl/certs/自定义证书.crt -v /本地路径/哈希值.0:/etc/ssl/certs/哈希值.0 你的distroless镜像名
      
  3. 直接合并到CA证书文件
    若容器的CA证书合并在/etc/ssl/certs/ca-certificates.crt中,可在主机将自定义证书追加到该文件,再挂载替换容器内的文件:

    cat 自定义证书.crt >> /本地路径/ca-certificates.crt
    docker run -v /本地路径/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt 你的distroless镜像名
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 08:52:20