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

Windows+WSL2严格证书网络中MLflow Docker构建SSL认证故障排查

解决自签名证书环境下MLflow Docker构建的SSL问题

一、别改源码!核心思路是复用证书配置

你在WSL2里直接装Docker能成功,就是因为构建过程用了WSL里的.bashrc、git和pip的证书配置。而Windows Docker Desktop默认没继承这些,所以才会各种SSL报错。正确做法是让Docker构建时能拿到信任的自签名证书,而不是去改MLflow源码禁用SSL。

二、方案1:让Windows Docker Desktop复用WSL2的配置

  1. 确保Docker Desktop用的是WSL2后端(设置里能看到,没开的话打开就行)
  2. 把WSL2里的证书同步到Windows侧,比如在WSL里执行:
    cat /etc/ssl/certs/your-selfsigned.crt > /mnt/c/Users/你的用户名/certs/selfsigned.crt
    
  3. 修改Docker Desktop的守护进程配置:
    • 打开Docker Desktop设置 → Docker Engine,添加以下内容(注意替换成你的证书路径和内部仓库):
      {
        "insecure-registries": ["你的内部镜像仓库地址"],
        "ca-certificates": ["C:\\Users\\你的用户名\\certs\\selfsigned.crt"]
      }
      
    • 重启Docker Desktop
  4. 尽量在WSL2的终端里执行MLflow构建命令,而不是Windows的cmd/powershell——这样Docker会用WSL的上下文,自动带上你的git、pip配置。

三、方案2:自定义Dockerfile,彻底绕开MLflow默认构建

这是最灵活的方式,步骤如下:

  1. 先把MLflow模型导出到本地:
    mlflow models export -m "runs:/25432534435423/Clustering" -o ./exported_model
    
  2. 自己写Dockerfile,参考MLflow默认模板,加上证书信任配置:
    # 用和MLflow默认一致的基础镜像,比如python:3.9-slim
    FROM python:3.9-slim
    
    # 复制你的自签名证书到系统信任目录
    COPY ./selfsigned.crt /usr/local/share/ca-certificates/
    RUN update-ca-certificates
    
    # 给pip设置证书和信任站点
    ENV PIP_CERT=/usr/local/share/ca-certificates/selfsigned.crt
    ENV PIP_TRUSTED_HOST=你的内部pypi站点,pypi.org,files.pythonhosted.org
    
    # 给git设置证书
    RUN git config --global http.sslCAInfo /usr/local/share/ca-certificates/selfsigned.crt
    
    # 复制导出的模型文件
    COPY ./exported_model /opt/ml/model
    
    # 安装MLserver和依赖(因为你用了--enable-mlserver)
    RUN pip install mlserver mlserver-mlflow
    
    # 启动命令
    CMD ["mlserver", "start", "/opt/ml/model"]
    
  3. 手动构建镜像:
    docker build -t myco_ml/myco_ml_cluster:20241007 .
    

四、方案3:给MLflow构建命令注入证书参数

不用改源码,通过--build-arg传递证书配置,还能自定义Docker模板:

  1. 先准备好自定义的Docker模板文件(比如custom_docker_template.j2),添加构建参数相关的配置:
    ARG SSL_CERT_FILE
    ARG PIP_CERT
    ARG PIP_TRUSTED_HOST
    ARG GIT_SSL_CAINFO
    
    COPY ./selfsigned.crt /usr/local/share/ca-certificates/
    RUN update-ca-certificates
    
    ENV SSL_CERT_FILE=$SSL_CERT_FILE
    ENV PIP_CERT=$PIP_CERT
    ENV PIP_TRUSTED_HOST=$PIP_TRUSTED_HOST
    ENV GIT_SSL_CAINFO=$GIT_SSL_CAINFO
    
    # 下面保留MLflow默认模板的其他内容,比如安装依赖、复制模型等
    
  2. 在WSL终端执行MLflow命令,加上构建参数和模板指定:
    mlflow models build-docker -m "runs:/25432534435423/Clustering" -n myco_ml/myco_ml_cluster:20241007 --enable-mlserver \
      --docker-template ./custom_docker_template.j2 \
      --build-arg SSL_CERT_FILE=/usr/local/share/ca-certificates/selfsigned.crt \
      --build-arg PIP_CERT=/usr/local/share/ca-certificates/selfsigned.crt \
      --build-arg PIP_TRUSTED_HOST=你的内部pypi站点 \
      --build-arg GIT_SSL_CAINFO=/usr/local/share/ca-certificates/selfsigned.crt
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 14:47:34