我可以从现有的数据库容器build立一个泊坞窗图像吗?
我是docker工人。 我正在使用docker撰写来pipe理容器。
我的目标是让数据库容器保持或不保存数据,可以由其他开发人员在没有许多手动步骤(pg_dump和pg_store等)的情况下在本地运行其开发环境。
我想知道是否可以构build数据库快照的docker镜像(postgres)。 这可能吗? 如果不是,build议使用docker做到这一点的方法是什么?
谢谢。
在docker,你可以保存数据在两个地方基本上:
- 在容器内部(默认)
- 一卷
数据库容器被configuration为将数据保存在卷中,因为这样数据可以在容器删除后存活。 也是更快。 从容器创build图像时,卷的数据将不会进入。
但是您可以创build一个具有存档脚本的数据库容器,该脚本将执行pg_dump
或cp
,并将结果保存在所有已安装卷之外的任何目录中。 所以数据将在容器内,并可以飞出一个图像。
然后使用docker commit <container id>
将更改保存到新图像。 标记新的图像docker tag <image id> registry/postgres:withdata
并执行docker tag <image id> registry/postgres:withdata
docker push
。
在Dockerfile
包含一个脚本,在数据库启动之后,检查它是否为空。 如果为空,则使用容器中的pg_restore
或cp
恢复。
那么这只是一个想法给你一点路线。 这是可能的,只需要一点点的工作。
问候