gpt4 book ai didi

postgresql - Docker postgres 持久性和容器生命周期

转载 作者:行者123 更新时间:2023-11-29 12:26:16 25 4
gpt4 key购买 nike

我是 docker 的新手。您可以在这里查看我的最后一个问题,您会发现我一直在沿着这条线提问。我仔细阅读了文档,还阅读了网络上的几篇文章(考虑到 docker 中的快速版本控制,这非常困难),但我仍然无法清楚地了解我应该如何使用容器及其对持久性的影响.

官方 postgres 镜像使用此命令在其 Dockerfile 中创建一个卷

VOLUME /var/lib/postgresql/data

readme.md 文件只展示了一个如何运行镜像的例子

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

当我尝试这样做时,我可以看到(通过“docker inspect some-postgres”)创建的卷位于主机的随机目录中,并且它似乎“属于”该特定容器。

所以这里有一些问题可能有助于我的理解:

  1. 看起来(来自官方 postgres 图像文档)预期的用法是使用“docker run”创建容器,然后使用“docker start”(最后一点我从 -d 和 --name 的事实中推断出来的)被使用)。这对我来说很有意义,但与我看到的关于容器的很多信息相冲突应该是短暂的。如果每次都旋转一个新容器,那么 Dockerfile 中的默认 VOLUME 配置就无法持久化。什么是正确的做事方式?
  2. 鉴于以上是正确的(我可以运行一次并启动多次),我在 Dockerfile 中看到 VOLUME 命令的唯一原因是由于绕过 CoW 文件系统而导致的 I/O 性能。这是对的吗?
  3. 能否请您清楚地解释使用这种方法而不是(我认为是非官方的)推荐的数据容器使用方法有什么问题?我想知道我的具体情况的优缺点,这是一个节点 js 内网应用程序。

谢谢,艾尔

最佳答案

你是对的,你可以使用“docker run”启动容器,并在未来使用“docker start”再次启动它,假设你没有删除容器。你也是正确的,docker 容器应该是短暂的,如果容器消失,你不应该处于糟糕的状态。您可以做的是将一个卷装入 docker 容器到数据库的存储位置。

docker run -v /postgres/storage:/container/postgres --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

如果您知道数据库写入容器内的位置,您就可以正确安装它,然后即使您删除了 postgres 容器,当您开始备份时,您的所有数据也会保留。除非您修改并保存容器,否则您可能还需要挂载一些其他控制配置的区域。

关于postgresql - Docker postgres 持久性和容器生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com