使用非外部卷是一种在dockerized postgres中保存数据的好方法

时间:2018-02-06 19:14:56

标签: postgresql docker

阅读后

How to persist data in a dockerized postgres database using volumes

我知道将卷挂载到本地主机文件夹,这是防止数据丢失的好方法,以防止在docker进程中发生致命错误。

我使用Windows作为主机和基于Linux的docker镜像。 Windows将postgres数据(基于Linux的docker映像)挂载到Windows主机目录时出现问题 - Mount Postgres data to Windows host directory

后来,我发现了另一种技术

  postgres:
    build:
      context: ./postgres
      dockerfile: Dockerfile
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data: {}

我可以使用非外部卷(我还不知道那是什么)

实施后,我尝试执行

docker-compose down
docker-compose up

数据仍在那里。

我可以知道,

  1. 这仍然是在dockerized postgres中保存数据的好方法吗?
  2. 确切存储数据的位置?它是主机中的一些隐藏目录吗?

1 个答案:

答案 0 :(得分:1)

  1. 这仍然是在dockerized postgres中保存数据的好方法吗? 没有,但是是的.... postgres是DB所以数据应该外部化,以避免在容器等连接失败的情况下数据丢失......
  2. 但一个好的做法是在主机或2个容器中的容器1上有2个DB 1(然后在容器内有数据),在主/从模式下同步,以便具有高容量的容器维护,例如,这是高可用性只是不备份! :)如果它不存在你必须创建它当然:-)

    1. 确切存储数据的位置?是否有一些隐藏目录 主机?
    2. 不,它是您共享/ var / lib / postgres的地方所以在您的示例中,在主机上名为postgres_data的目录中

      (使用完整路径是一种很好的做法,然后你自己看到/猜测文件中定义的位置):)