drs*_*drs 5 mongodb docker docker-compose
我有一个 docker-compose 文件,它将种子脚本与来自 docker 公共注册表的 mongo 图像链接起来。我可以用以下内容填充数据库:
docker-compose up
docker-compose run seed_script
Run Code Online (Sandbox Code Playgroud)
mongo我可以使用主机系统中的 cli连接到此 mongo 容器,并验证种子脚本是否正常工作以及数据库中是否有数据。
当我完成播种后,我可以看到带有 .mongo 容器 ID 的 mongo 容器 ID docker ps。我通过按 docker-compose 终端来停止容器Ctrlc并将更改提交到 mongo 容器:
docker commit <mongo container ID> mongo-seeded-data
Run Code Online (Sandbox Code Playgroud)
但是,当我单独运行该容器时,它是空的:
docker run -p 27017:27017 mongo-seeded-data
mongo
> show dbs
local 0.000GB
Run Code Online (Sandbox Code Playgroud)
如果我再次启动 docker-compose 容器并使用我的主机 mongo 客户端,我可以看到数据:
docker-compose up
mongo
> show dbs
seeded_db 0.018GB
local 0.000GB
Run Code Online (Sandbox Code Playgroud)
我提交了包含数据的容器。为什么当我打开容器时它不存在?与 做什么docker-compose不同docker run?
小智 3
因为里面定义了一个VOLUME。
docker commit将overlay fs的内容保存为新图像,但VOLUMES超越overlay fs。这就是它没有被保存的原因。
我过去遇到过同样的问题,并通过使用不同的数据目录来解决修补 mongo 图像的问题,以便数据将写入容器而不是 VOLUME 内。
| 归档时间: |
|
| 查看次数: |
2420 次 |
| 最近记录: |