我在docker环境中创建了一个Rails应用程序,它链接到postgres实例。我编辑了postgres容器以添加初始数据(通过从rails应用程序运行rake db:setup)。现在,我提交了postgres数据库,但是当我创建一个新容器(已提交的postgres图像)时,似乎无法记住我的数据。
是否有可能将数据保存在提交中,然后在以后重用?
我使用了postgres图片:https://registry.hub.docker.com/_/postgres/
问题是postgres Dockerfile将“ / var / lib / postgresql / data”声明为卷。这只是一个普通目录,它位于映像使用的联合文件系统之外。在没有容器链接到它们之前,这些卷一直存在,直到它们被明确删除。
您有几种选择:
--volumes-from
所有这些建议都要求您在容器运行后使用卷来管理数据。另外,您可以编写自己的Dockerfile,而不必声明一个卷。docker commit添加数据后,您可以用来创建新图像。这可能会在短期内起作用,但是绝对不是您应该如何使用容器的方法-它是不可重复的,最终您将用完Union File System中的各个层。
docker commit
查看有关管理容器中数据的官方Docker文档,以了解更多信息。