使用 docker-compose 时如何安全地停止/启动我的 postgres 服务器

Bla*_*man 8 postgresql docker

当我在应用程序中发布新功能时,有时我会经常停止/启动 docker。

docker-compose up -d
docker-compose stop
Run Code Online (Sandbox Code Playgroud)

我使用的几乎是最基本的 postgres docker 设置(见下文)。我正在将 /data 文件夹映射到我的主机。

如果我一天多次停止/启动 docker 导致数据损坏,我应该担心什么吗?

调用是docker-compose stop停止我的 postgres 实例的最佳方法吗?

我的 docker-compose 中的 postgres 服务如下所示:

  db:
    image: postgres:9.4
    volumes:
      - "/home/deploy/data/pgdata:/var/lib/postgresql/data"
    restart: always
Run Code Online (Sandbox Code Playgroud)

该设置目前在开发中运行顺利,但一旦投入生产,我想确保遵循最佳实践等。

tec*_*abu 5

使用,

docker-compose down -v
Run Code Online (Sandbox Code Playgroud)

它的作用基本上是删除您添加的所有卷。如果您不这样做,这些卷将继续存在并耗尽您的空间。它仅删除 docker 容器内的卷。如果您希望该数据在容器移除后仍然存在,则主机中的卷将保留并在容器移除后继续存在。

每当您通过创建 docker 容器时docker run,Docker 都会创建一个volume/目录来保存有关容器的详细信息。执行后docker run,如果您查看/var/lib/docker/containers,您将看到您启动的每个容器都有一个目录。如果您尚未删除先前容器的卷,您将在“容器”目录下看到许多目录。这些目录的名称将是很长的随机字母和数字。因此,如果您在停止容器时不告诉 docker 删除这些目录,那么它将永远存在。我上面提到的选项v将在您删除容器时删除这些目录。请记住,您/var/lib/docker只能以 root 用户身份查看该目录的内容。要更改为 root 用户,请sudo -i在尝试查看目录内容之前使用。

  • 问题不是如何彻底停止 PostgreSQL 吗? (4认同)