为什么我的mongo数据库容器中没有docker提交保存数​​据?

时间:2016-05-17 14:17:24

标签: mongodb docker docker-compose

我有一个docker-compose文件,它将种子脚本与来自docker公共注册中心的mongo图像相关联。我可以使用以下命令填充数据库:

docker-compose up
docker-compose run seed_script

我可以使用来自主机系统的mongo cli连接到此mongo容器,并验证种子脚本是否正常工作以及数据库中的数据。

当我完成播种时,我可以看到带有docker ps的mongo容器ID。我在docker-compose终端中按 Ctrl c 停止容器,并将更改提交给mongo容器:

docker commit <mongo container ID> mongo-seeded-data

但是,当我单独运行该容器时,它是空的:

docker run -p 27017:27017 mongo-seeded-data

mongo
> show dbs
local  0.000GB

如果我再次调出docker-compose容器并使用我的主机mongo客户端,我可以看到数据:

docker-compose up

mongo
> show dbs
seeded_db  0.018GB
local      0.000GB

我提交了包含数据的容器。当我拿起容器时为什么不存在? docker-compose做什么的不同于docker run

1 个答案:

答案 0 :(得分:1)

因为其中定义了VOLUME。

docker commit将叠加层fs的内容另存为新图像,但是“体积”超出了叠加层fs。这就是为什么它无法保存。

过去,我遇到了同样的问题,并解决了通过使用不同的数据目录修补mongo映像的问题,以便将数据写入容器中而不是VOLUME中。