docker与MongoDb和卷组合-不';他似乎没有上马
我正在尝试运行adocker与MongoDb和卷组合-不';他似乎没有上马,mongodb,docker,docker-compose,volumes,Mongodb,Docker,Docker Compose,Volumes,我正在尝试运行adocker compose操作,该操作生成一个Redis和MongoDb实例,并(应该)通过volumes规范从主机pc向MongoDb实例提供一个数据文件 我可以使用以下docker compose.yml成功启动容器: redis: image: redis ports: - "6379:6379" mongo: image: mongo:latest volumes: - ./data/db:/data/db ports: -
docker compose
操作,该操作生成一个Redis
和MongoDb
实例,并(应该)通过volumes
规范从主机pc向MongoDb
实例提供一个数据文件
我可以使用以下docker compose.yml
成功启动容器:
redis:
image: redis
ports:
- "6379:6379"
mongo:
image: mongo:latest
volumes:
- ./data/db:/data/db
ports:
- "27017:27017"
command: --rest
假设它应该“挂载”目录data/db
,其中data
dir位于docker compose.exe
文件旁边
我可以连接到Redis
和MongoDb
,但对集合执行count()
的简单查询将返回0
(其中应包含数据)。这让我相信卷
属性的装载不起作用
如果我检查容器上的文件结构,我不会看到/data
文件夹我是不是错过了什么。。。谢谢你的任何线索强>
您显示的是基于Linux主机的文件系统,该主机运行docker守护程序。
它不是:
- 您的本地
/data/db
是()
- 安装的
/data/db
位置:应安装在mongo容器中
只有当您的文件位于C:\users\…
或/users/…
中时,这才有效,这是VirtualBox在Linux虚拟机中装载的唯一主机文件夹
要检查装载是否已发生,请执行docker exec mongo bash
,在该容器中打开bash并检查ls/data
ok cool,我可以通过Kitematic
看到正在装载卷,但它没有指向我指定的本地目录。它需要位于c:\users
目录中这一事实解决了这个问题。我把所有的东西都移到了那里,现在它装上了正确的音量。太糟糕了,数据无法加载,这意味着容器无法启动。。。(文本文件忙:“/data/db/journal/j._0”)@Ropstah请注意,您可以在boot2docker中装入其他文件夹(:另请参阅同一页上的其他答案),感谢您的清理。我想我看到了错误,它与/data/db
文件夹上的权限有关。不知何故,容器无法写入这些文件。。。我将把你的答案标记为答案,但希望你能告诉我应该在哪里设置这些权限…@Ropstah作为一个例子:,或者,或者,谢谢你的链接建议。然而,我并不确定我需要做什么来修复它。由于权限限制,我无法启动容器。我唯一能想象的是在主机上执行一些chown
操作(哪个是Docker对吗?不是运行Docker VM的本地pc?),其中/data/db
文件夹用于mongodb:mongodb
用户/组或其他什么?