Docker卷命名报错:本地卷名称含无效字符的问题求助
解决Docker卷名称无效字符问题
问题根源
- 卷名不匹配:
mongodb服务里引用的卷是mongodata,但volumes块定义的卷名是mongo-data,两者不一致导致Docker Compose尝试自动生成卷名。 - YAML语法错误:
volumes块里的driver:local缺少空格,不符合YAML键值对格式要求,导致Docker无法正确识别自定义卷配置,进而生成了以下划线开头的无效卷名。
修复步骤
- 修改
compose.yaml文件:- 将
mongodb服务下的volumes行从- mongodata:/data/db改为- mongo-data:/data/db,确保和volumes块的卷名一致。 - 将
volumes块里的driver:local改为driver: local,补上空格满足YAML语法规范。
- 将
修改后的完整compose.yaml如下:
version: '3' services: my-app: image: ${docker-registry}/my-app:1.0 ports: - 3000:3000 depends_on: - mongodb mongodb: image: mongo ports: - 27017:27017 environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=password volumes: - mongo-data:/data/db mongo-express: image: mongo-express restart: always ports: - 8080:8081 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME=admin - ME_CONFIG_MONGODB_ADMINPASSWORD=password - ME_CONFIG_MONGODB_SERVER=mongodb depends_on: - mongodb volumes: mongo-data: driver: local
- 如果之前已经生成了错误的卷,先执行删除命令清理:
docker volume rm _mongo-data
- 最后重新运行启动命令:
docker compose -f /docker-compose.yaml up
内容的提问来源于stack exchange,提问作者Michael Alubankudi
相关产品推荐
相关产品推荐

