【问题标题】:Persist database of docker container持久化docker容器的数据库
【发布时间】:2018-07-03 13:25:28
【问题描述】:

我在我的项目中使用 postgres docker 映像。对于初始化,我使用以下命令来创建和初始化我的数据库(表、视图、数据......)

COPY sql_dump.sql /docker-entrypoint-initdb.d/

容器停止和删除后是否可以保留这些数据?例如,当我运行 postgres 的图像时,它会使用这些数据创建数据库,而不会在每次容器启动时加载脚本。只需加载首次运行的创建数据。

我做了一些研究,发现了 VOLUME 命令,但我不知道如何将它用于我的目的,我是 Docker 新手。谢谢你的帮助。我正在使用 Docker For Win v18。

【问题讨论】:

标签: database postgresql docker docker-compose


【解决方案1】:

你可以使用docker命名卷更多信息可以找到here

这将创建一个名为 postgres-data 的命名卷

docker volume create postgres-data 

并说这是您创建容器的命令。

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

把它改成这个。

docker run --name some-postgres  -v postgres-data:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword -d postgres

这应该在 /var/lib/postgresql 下挂载 postgres-data 卷。他们可以初始化您的数据库吗?当您停止并启动容器时,它将包含持久数据。

-HTH

【讨论】:

  • 您正在使用 /var/lib/postgresql 之类的路径 .. 没关系我是否在 Windows 机器上?
  • 即使您在 Windows 机器上运行 docker,您的 docker 容器也很可能运行 linux。路径是相对于容器,而不是主机。
  • 哦,好的。所以这条路径就是那个容器中的路径,对吧?不是窗户。
  • @DenisStephanov 正确。还有一些称为主机数据卷的东西,您可以在其中指定 Windows 上的路径,但事实并非如此。你可以在这里找到更多信息; tricksofthetrades.net/2016/03/14/docker-data-volumes 在主机数据卷下。
猜你喜欢
  • 2022-08-13
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 2018-10-31
  • 2016-04-09
  • 1970-01-01
相关资源
最近更新 更多