2015-02-09 52 views
2

我使用official docker container。這是一個Dockerfile。 我使用這個命令運行容器:數據保存在外部文件夾MongoDB的搬運工容器

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

接下來我連接到MongoDB中,創建一個數據庫,收集並在其上插入數據。

我可以停止容器docker stop,再次運行它docker start並且所有數據更改都將出現在數據庫中。

如果我刪除容器docker rm並創造新的之一 - 數據dissapear。爲什麼?我該如何解決它?

回答

3

基於the current Dockerfile您需要在/data/db下安裝,而不僅僅是/data。由於這種不匹配,您的數據可能會進入容器的專用存儲空間,而不是放入您的安裝卷。

+0

我已經試過這version'docker運行--name蒙戈-DB -d -p 27017:27017 -v到/ mnt /的LaCie /數據庫/蒙戈/數據/ DB:/數據/ DB mongo'。在這種情況下,它不起作用,我的事件在'/ mnt/lacie/database/data/db'文件夾下沒有任何文件。 – demas 2015-02-10 04:55:58

0

嘗試調試它是這樣的:

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 

如果這樣的作品,再有就是在這樣蒙戈DB是存儲數據的問題(我在Dockerfile見例如,它指定/data/dbVOLUME所以它可能期望/data/文件夾的其餘部分在初始化時爲空)。這可能是一個錯誤,但我只是猜測沒有進一步的信息。

可以使用測試我的理論:

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 
+0

這兩個例子都可以工作,但它工作,直到我有mongo容器。如果我刪除了'mongo-db'容器,我不能使用'--volumes-from mongo-db mongo'運行'mongo-db2'並丟失所有數據。 – demas 2015-02-10 04:50:57

0

我有同樣的問題。問題的原因不是用rm -f去除mongo容器,我們必須首先命令「停止」,然後「rm」mongo容器。