将数据保存在mongodb docker容器的外部文件夹中

我正在使用官方docker集装箱 。 这是一个Dockerfile 。 我使用这个命令运行容器:

docker run --name mongo-db -d -p 27017:27017 -v /mnt/lacie/databases/mongo/data:/data mongo 

接下来我连接到mongodb,创build一个数据库,一个集合,并在其上插入数据。

我可以停止容器docker stop ,再次运行docker start并且所有的数据更改都会出现在数据库中。

如果我删除容器docker rm并创build新的 – 数据消失。 为什么? 我该如何解决?

根据当前的Dockerfile,你需要在/data/db下安装,而不仅仅是/data 。 由于这种不匹配,您的数据可能会进入容器的专用存储空间,而不是进入您的安装卷。

尝试像这样debugging它:

 docker run --name mongo-db -d -p 27017:27017 -v /data mongo docker stop mongo-db docker run --name mongo-db2 -d -p 27017:27017 --volumes-from mongo-db mongo 

如果这样的话,那么mongo db存储数据的方式就有问题了(例如,我在Dockerfile中看到它将/data/db指定为VOLUME所以可能会希望/data/文件夹的其余部分为在初始化时为空)。 这可能是一个错误,但我只是猜测没有进一步的信息。

你可以使用下面的testing

 docker run --name mongo-db -d -p 27017:27017 mongo docker stop mongo-db docker run --name mongo-db2 -d -p 27017:27017 --volumes-from mongo-db mongo 

我也有同样的问题。 引起问题的原因不是用rm -f去除mongo容器,首先要命令“停”然后“rm”mongo容器。