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