首页 > 解决方案 > 使用 docker-compose 时如何安全地停止/启动我的 postgres 服务器

问题描述

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

docker-compose up -d
docker-compose stop

我使用的几乎是最基本的 postgres docker setup(见下文)。我正在将 /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

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

标签: postgresqldocker

解决方案


利用,

docker-compose down -v

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

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


推荐阅读