Mongodb 如何设置docker mongo数据卷

Mongodb 如何设置docker mongo数据卷,mongodb,docker,Mongodb,Docker,我想使用Dockerizing MongoDB并将数据存储在本地卷中 但是。。失败了 它有mongo:latest图像 kerydeMacBook-Pro:~ hu$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mongo latest b11eedbc330f

我想使用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
我想将mono数据存储在
~/data
中。所以---

但是。。。它不起作用

docker ps--没有守护进程mongo

尝试运行“mongo”--失败

docker检查mongo

如果我不设置数据量,mongo image可以工作

但是,在设置数据量时,它不能。谁能帮助我?

请尝试检查容器停止并进入“已存在”模式时发生的情况

另请参见指定卷的完整路径是否有帮助:

docker run -p 27017:27017 -v /home/<user>/data:/data/db  ...
一个错误:13是关于什么的

加上:

这是一个文件所有权/权限问题(与此docker映像无关),可以通过VB使用boot2docker,也可以通过VB使用vagrant box

尽管如此,我还是设法破解了所有权,将boot2docker中的/Users共享卷重新安装到uid 999和gid 999(mongo docker image使用的是uid 999和gid 999)并启动了它:

但是。。。由于不支持文件系统类型,mongod崩溃(mmap在vboxsf上不工作)

因此,实际的解决方案是尝试,因为现在提到:

MongoDB需要一个在目录上支持
fsync()
的文件系统。
例如,HGFS和Virtual Box的共享文件夹不支持此功能 手术

因此:

由于virtualbox共享文件夹的工作方式,装载到OSX对MongoDB不起作用


对于DVC(数据卷容器),请尝试:

然后将其用作:

docker run -p 27017:27017 -v mongodbdata:/data/db  ...    
看看是否效果更好

正如我提到的:


docker volume inspect mongodbdata(请参阅)将为您提供其路径(您可以根据需要进行备份)

自2017年夏季起,本地卷不被视为最佳做法

Per:

卷是保存Docker容器生成和使用的数据的首选机制

通过Docker Compose:

version: '2'
    services:
      mongodb:
        image: mongo:latest
        volumes:
          - ./<your-local-path>:/data/db
版本:“2”
服务:
mongodb:
图片:mongo:最新
卷数:
-./:/data/db
/data/db
是保存在容器上的数据的位置


是您的计算机上保存实际数据库日志文件的主机位置。

找到一个链接:VirtualBox共享文件夹不适用于在Windows上运行MongoDB容器的任何人:如上所述,使用path(我们称之为
本地卷
)将卷从Windows主机装载到MongoDB容器时会出现问题

您可以使用
Docker卷
(由Docker管理的卷)解决此问题:

或者使用
docker compose
作为我的首选:

版本:“3.4”
服务:
....
db:
图片:mongo
卷数:
-mongodata:/data/db
重新启动:除非停止
卷数:
蒙哥达塔:

在Windows 10上测试并正常运行

运行docker logs mongo,-initAndListen中出现异常:98无法创建/打开锁文件:/data/db/mongod.lock errno:13权限被拒绝mongod实例是否已在运行?,终止2016-02-15T06:19:17.638+0000 I控件[initAndListen]dbexit:rc:100可能是权限问题then@KeryHu我编辑了答案以提供可能的解决方法。@KeryHu我使用DVC(数据卷容器)选项编辑了答案,因为您无法将本地文件夹装入容器。@VonCYes,谢谢您的答案,我刚才看到了。但运行boot2dockerssh-bash:boot2docker:command未找到,我在docker文档中再也看不到这条语句了。请检查并更新您的答案好吗?此语句的新URL是此方法使用绑定挂载,这是不可取的,您应该使用docker
volumes
而不是docker volume create mongodata
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
        }
    ],
docker run -p 27017:27017 -v /home/<user>/data:/data/db  ...
docker logs mongo 
exception in initAndListen: 98 
Unable to create/open lock file: /data/db/mongod.lock 
errno:13 Permission denied 
Is a mongod instance already running?
terminating 2016-02-15T06:19:17.638+0000 
I CONTROL [initandlisten] dbexit: rc: 100 
$ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users
docker volume create mongodbdata
docker run -p 27017:27017 -v mongodbdata:/data/db  ...    
docker volume create mongodbdata
docker run -p 27017:27017 -v mongodbdata:/data/db mongo
version: '2'
    services:
      mongodb:
        image: mongo:latest
        volumes:
          - ./<your-local-path>:/data/db
docker volume create mongodata