我可以从现有数据库容器构建docker镜像吗?

Ann*_*e C 2 postgresql docker docker-compose

我是码头工人的新手.我正在使用docker compose来管理容器.

我的目标是让数据库容器持久化或不持久化数据,这可以由其他开发人员在没有很多手动步骤(pg_dump和pg_store等)的情况下提取,以在本地运行他们的开发环境.

我想知道我是否可以构建数据库快照的docker镜像(postgres).这可能吗?如果没有,推荐使用docker的方法是什么?

谢谢.

Car*_*rez 5

在docker中,您可以基本上将数据保存在两个地方:

  1. 容器内部(默认)
  2. 一卷

数据库容器配置为将数据保存在卷中,因为通过这种方式,数据可以在容器删除后继续存在.它也更快.从容器创建映像时,卷中的数据将无法进入.

但是您可以创建一个具有归档脚本的数据库容器,该脚本将执行pg_dumpcp将结果保存在任何已安装卷之外的任何目录中.因此,数据将位于容器内,并可以飞出图像.

然后使用docker commit <container id>将更改保存到新图像.标记新图像docker tag <image id> registry/postgres:withdata并执行docker push.

Dockerfile包含一个脚本,在数据库启动后,检查它是否为空.如果为空,则使用容器pg_restorecp从容器中恢复它.

嗯,这只是一个想法,给你一点路线.这是可能的,只需要一点点工作.

问候