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

运行docker compose up -d报invalid volume specification错误如何解决

问题描述

执行docker compose up -d启动容器服务时触发挂载报错,使用的docker-compose.yml配置如下:

version: "3.9"
services:
  mongo:
    container_name: "mernstackdb"
    image: mongo:5.0.8-focal
    restart: always
    ports:
      - 27017:27017
    volumes:
      - ./db:/data/db
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: root

执行命令后返回错误:

Error response from daemon: invalid volume specification: 'C:\Users\Momin Riyadh\Desktop\momin-git\mern-stack\db:/data/db:rw': invalid mount config for type "bind": bind source path does not exist: c:\users\momin riyadh\desktop\momin-git\mern-stack\db

问题原因

该错误属于bind挂载类型的典型问题:Docker使用bind挂载时,不会自动创建宿主机上不存在的源目录,配置的相对路径./db解析后对应的宿主机路径C:\Users\Momin Riyadh\Desktop\momin-git\mern-stack\db实际不存在,因此挂载校验失败。

解决方法

按优先级从高到低选择以下方案即可:

  • 方案1:手动创建缺失的宿主机目录
    先确认当前执行docker命令的终端工作目录和docker-compose.yml所在目录一致,之后在该目录下执行mkdir db(Windows cmd/PowerShell、Linux/macOS终端均可执行)创建db文件夹,再重新执行docker compose up -d即可正常启动。
  • 方案2:改用Docker命名卷(推荐生产环境使用)
    命名卷由Docker自动管理,不需要手动创建目录,也不会受宿主机路径格式、权限、空格等问题影响。修改docker-compose.yml配置如下:
    version: "3.9"
    services:
      mongo:
        container_name: "mernstackdb"
        image: mongo:5.0.8-focal
        restart: always
        ports:
          - 27017:27017
        volumes:
          - mongo_data:/data/db
        environment:
          MONGO_INITDB_ROOT_USERNAME: root
          MONGO_INITDB_ROOT_PASSWORD: root
    
    # 顶级卷声明
    volumes:
      mongo_data:
    
    保存配置后重新执行启动命令即可。
  • 排查注意点:Windows系统下如果用户目录带空格(如本次路径中的Momin Riyadh),不要直接写绝对路径做bind挂载,容易触发路径解析错误,优先用相对路径或者命名卷规避问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:36:47