运行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
相关产品推荐
相关产品推荐

