我想使用Dockerizing MongoDB和存储数据在本地卷。
但是...失败了...
它有mongo:latest
个图像
kerydeMacBook-Pro:~ hu$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
mongo latest b11eedbc330f 2 weeks ago 317.4 MB
ubuntu latest 6cc0fc2a5ee3 3 weeks ago 187.9 MB
我想将单声道数据存储在~/data
中。因此---
kerydeMacBook-Pro:~ hu$ docker run -p 27017:27017 -v ~/data:/data/db --name mongo -d mongo
f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43
但是...它不工作...
docker ps --没有守护进程mongo
kerydeMacBook-Pro:~ hu$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
尝试运行“mongo”--失败
kerydeMacBook-Pro:~ hu$ docker exec -it f57 bash
Error response from daemon: Container f57 is not running
Docker 视察蒙戈
kerydeMacBook-Pro:~ hu$ docker inspect mongo
[
{
"Id": "f570073fa3104a54a54f39dbbd900a7c9f74938e2e0f3f731ec8a3140a418c43",
"Created": "2016-02-15T02:19:01.617824401Z",
"Path": "/entrypoint.sh",
"Args": [
"mongod"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 100,
"Error": "",
"StartedAt": "2016-02-15T02:19:01.74102535Z",
"FinishedAt": "2016-02-15T02:19:01.806376434Z"
},
"Mounts": [
{
"Source": "/Users/hushuming/data",
"Destination": "/data/db",
"Mode": "",
"RW": true
},
{
"Name": "365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a",
"Source": "/mnt/sda1/var/lib/docker/volumes/365e687c4e42a510878179962bea3c7699b020c575812c6af5a1718eeaf7b57a/_data",
"Destination": "/data/configdb",
"Driver": "local",
"Mode": "",
"RW": true
}
],
如果我不设置数据量,mongo图像可以工作!
但是,设置数据量的时候,不能,谁能帮我一下?
5条答案
按热度按时间pxyaymoc1#
尝试检查docker logs,查看容器停止并进入“Existed”模式时发生了什么。
另请参阅指定卷的完整路径是否有帮助:
行动纲领补充说:
issue 30是关于一个errno:13的。
该评论补充道:
这是一个文件所有权/权限问题(与此docker映像无关),无论是在VB中使用boot 2docker还是在VB中使用流浪箱。
尽管如此,我还是设法破解了所有权,**将boot 2docker内部的/Users共享卷重新挂载到uid 999和gid 999(mongo docker image使用的是这两个文件)**并启动了它:
但是... mongod由于文件系统类型不受支持而崩溃(mmap在vboxsf上不工作)
所以实际的解决方案是尝试**DVC: Data Volume Container**,因为现在mongodb文档提到:
MongoDB需要一个在目录上支持
fsync()
的文件系统。例如,HGFS和Virtual Box的共享文件夹不支持此操作。
因此:
由于VirtualBox共享文件夹的工作方式,安装到OSX对MongoDB不起作用。
对于DVC(数据卷容器),请尝试
docker volume create
:然后将其用作:
看看这样效果好不好。
正如我在评论中提到的:
docker volume inspect mongodbdata
(参见docker volume inspect
)将为您提供其路径(如果需要,您可以备份该路径)siotufzp2#
根据Docker Docs:
卷是持久化Docker容器生成和使用的数据的首选机制。
nnt7mjpx3#
通过Docker编写:
/data/db
是保存在容器上的数据的位置。<your-local-path>
是您的计算机(也称为主机)上保存实际数据库日记文件的位置。qc6wkl3g4#
对于任何在Windows上运行MongoDB容器的用户:正如这里所描述的,当您使用路径(我们称之为
local volume
)将卷从Windows主机装载到MongoDB容器时,会出现一个问题。您可以使用
Docker volume
(由Docker管理的卷)解决此问题:或者使用
docker-compose
作为首选项:在Windows 10上测试,它的工作原理
owfi6suc5#
找到链接:virtualBox共享文件夹不受mongodb支持。