Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 使用非外部卷是在停靠的postgres中持久化数据的好方法吗_Postgresql_Docker - Fatal编程技术网

Postgresql 使用非外部卷是在停靠的postgres中持久化数据的好方法吗

Postgresql 使用非外部卷是在停靠的postgres中持久化数据的好方法吗,postgresql,docker,Postgresql,Docker,读后 我知道将卷装载到本地主机文件夹是防止数据丢失的好方法,以防docker进程中发生致命事件 我使用Windows作为主机和基于Linux的docker映像。Windows在将postgres data基于Linux的docker映像装载到Windows主机目录时遇到问题- 后来,我发现了另一种技术 postgres: build: context: ./postgres dockerfile: Dockerfile restart: always

读后

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

我使用Windows作为主机和基于Linux的docker映像。Windows在将postgres data基于Linux的docker映像装载到Windows主机目录时遇到问题-

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

  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
数据仍然存在

我可以知道吗

这仍然是在停靠的postgres中保存数据的好方法吗? 数据存储的确切位置?它是主机中的某个隐藏目录吗? 这仍然是在停靠的postgres中保存数据的好方法吗? 不,但olso是的…postgres是DB,因此数据应该外部化,以避免在与容器的连接失败等情况下丢失数据。。。 但一个好的做法是,在主机上的容器1上或在2个容器中安装2 DB 1,然后在主/从模式下同步容器中的数据,以实现容器维护的高可用性,例如,但这只是高可用性,而不是备份!:如果它不存在,您必须创建它,当然:-

数据存储的确切位置?它是某个隐藏的目录吗 主机? 不,它是共享/var/lib/postgres的地方,所以在您的示例中,在主机上名为postgres_data的目录中


使用完整路径是一种很好的做法&然后您自己看到/猜测它在文件中的定义:

但是,我环顾我的Windows主机,仍然找不到postgres_数据文件夹的位置。你有什么想法吗?你决定在哪里创作。。。我认为像d:/shares/postgres_data这样的地方可以。我认为-./postgres_data:/var/lib/postgresql/data将指向您的本地主机目录不同于-postgres_data:/var/lib/postgresql/data我不知道它指向哪里?不/var/lib/posgresql/data是本地的postgres_数据在主机本地数据上是可变的,如果您需要的话不知道它在哪里它应该是默认的c/Users//var/local/../data如果您手动运行您的容器docker run-rm-it-v/toto:/var/log/somecontainer bash ls/var/log您将看到主机toto目录的内容,该目录作为/var/log装载在文件夹base的容器内-父目录将是PGDATA