如何设置docker mongo数据量

新手上路,请多包涵

我想使用 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

码头工人检查蒙戈

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 image 可以工作!

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

原文由 Kery Hu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 325
2 个回答

尝试检查 docker 日志 以查看容器停止并进入“现有”模式时发生的情况。

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

 docker run -p 27017:27017 -v /home/<user>/data:/data/db  ...

OP补充说:

 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

errno:13 是 第 30 期 的内容。

这条评论 补充说:

这是一个文件所有权/权限问题(与此 docker 映像无关),使用带有 VB 的 boot2docker 或带有 VB 的 vagrant box。

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

 $ boot2docker ssh
$ sudo umount /Users
$ sudo mount -t vboxsf -o uid=999,gid=999 Users /Users

但是…由于不支持文件系统类型而导致 mongod 崩溃(mmap 不适用于 vboxsf)

所以实际的解决方案是尝试 DVC: Data Volume Container ,因为现在 mongodb 文档 提到:

MongoDB 需要一个在目录上支持 fsync() 的文件系统。

例如,HGFS 和 Virtual Box 的共享文件夹不支持此操作。

所以:

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


对于 DVC(数据卷容器),请尝试 docker volume create

 docker volume create mongodbdata

然后将其用作:

 docker run -p 27017:27017 -v mongodbdata:/data/db  ...

看看是否效果更好。

正如我 在评论中 提到的:

A docker volume inspect mongodbdata (参见 docker volume inspect )将为您提供其路径(如果需要,您可以备份)

原文由 VonC 发布,翻译遵循 CC BY-SA 3.0 许可协议

截至 2017 年夏季,本地卷不被视为最佳实践。

根据 Docker 文档

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

 docker volume create mongodbdata
docker run -p 27017:27017 -v mongodbdata:/data/db mongo

原文由 Joshua Cook 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题