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

Windows环境Docker运行Prometheus示例时绑定挂载路径报错求助

嘿,我来帮你搞定这个Docker Swarm挂载的问题!咱们一步步拆解:

第一个报错的根源:路径格式不兼容

你遇到的invalid mount config for type "bind": bind source path does not exist,本质是Windows路径格式在Docker Swarm的Linux容器模式下不被识别。

虽然PowerShell的Test-Path能找到C:/temp/prometheus.yml,但Docker Swarm(尤其是用WSL2后端的Linux容器)是跑在类Unix环境里的,它不认Windows风格的盘符路径,得用WSL的路径格式:把C:/xxx改成/mnt/c/xxx。

另外还要确认Docker Desktop的文件共享设置已经开启了C盘的共享(在Docker Desktop设置→Resources→File Sharing里勾选C盘),不然Docker没权限访问主机文件。

第二个报错的根源:混淆了Bind挂载和Volume挂载

你改成volume类型后报错,是因为你把主机文件路径直接当成了Volume名称——Docker Volume的命名规则很严格,不能有冒号、斜杠这些特殊字符,而且Volume是Docker管理的独立存储卷,不是用来直接挂载主机文件的,挂载主机文件必须用bind类型。

修正后的命令

如果你的Docker用的是默认的Linux容器模式,执行这条命令:

docker service create --replicas 1 --name my-prometheus `
--mount type=bind,source="/mnt/c/temp/prometheus.yml",destination=/etc/prometheus/prometheus.yml `
--publish published=9090,target=9090,protocol=tcp `
prom/prometheus

要是你用的是Windows容器模式(不推荐,因为prom/prometheus是Linux镜像,大概率不兼容),路径要换成Windows原生格式并转义:

docker service create --replicas 1 --name my-prometheus `
--mount type=bind,source='C:\temp\prometheus.yml',destination=C:\etc\prometheus\prometheus.yml `
--publish published=9090,target=9090,protocol=tcp `
prom/prometheus

额外检查点

  1. 确保prometheus.yml文件的内容符合Prometheus的配置规范,避免后续启动报错
  2. 如果是单节点Swarm,也要确保路径在当前节点上确实存在(用WSL终端执行ls /mnt/c/temp/prometheus.yml验证)

内容的提问来源于stack exchange,提问作者Wouter de Kort

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:57:47