为什么从以前的单独的Docker容器中可以看到postgres日志,而该Docker容器已安装了单独的数据目录

从空白目录创建一个新的子目录pg1_data,并将其安装为运行Docker的official postgres映像(version 12,Dockerfile here)的新容器的数据目录。

user@XXX:~$ ls #(directory is empty)
user@XXX:~$ mkdir pg1_data
user@XXX:~$ docker run --rm -p 55555:5432 --name pg1 --mount 'type=bind,src='/home/user/pg1_data,dst='/var/lib/postgresql/data' postgres

容器成功旋转,数据库系统接受连接,ls pg1_data显示已生成postgresql数据目录结构。

然后,假设我执行docker stop pg1,并使用全新的目录和容器重复第一步。

user@XXX:~$ mkdir pg2_data
user@XXX:~$ docker run --rm -p 55777:5432 --name pg2 --mount 'type=bind,src='/home/user/pg2_data,dst='/var/lib/postgresql/data' postgres

这也像以前一样工作,但是我看到以下输出:

2019-12-11 04:10:18.441 UTC [1] LOG:  starting PostgreSQL 12.1 (Debian 12.1-1.pgdg100+1) on x86_64-pc-linux-gnu,compiled by gcc (Debian 8.3.0-6) 8.3.0,64-bit
2019-12-11 04:10:18.442 UTC [1] LOG:  listening on IPv4 address "0.0.0.0",port 5432
2019-12-11 04:10:18.442 UTC [1] LOG:  listening on IPv6 address "::",port 5432
2019-12-11 04:10:18.446 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2019-12-11 04:10:18.469 UTC [54] LOG:  database system was shut down at 2019-12-11 04:10:18 UTC
2019-12-11 04:10:18.476 UTC [1] LOG:  database system is ready to accept connections

我很困惑,为什么这个新容器中的postgres可以访问旧容器中的postgres历史,并显示消息“数据库系统在...处关闭...”,它们是{{1 }}映像,装入两个单独的空白数据目录。这两个容器和postgres实例之间有什么关系?我是否从根本上误解了PostgreSQL和/或Docker的工作方式?

yqfjh 回答:为什么从以前的单独的Docker容器中可以看到postgres日志,而该Docker容器已安装了单独的数据目录

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2944631.html

大家都在问