PostgreSQL对其数据文件夹的处理与Docker的主机安装文件夹不兼容。
它可能在安装了ext4文件系统的Linux下运行,但在运行
时在OS X或Windows上运行docker run -it --rm -v `pwd`/test:/var/lib/postgresql/data postgres
initdb终止于随机磁盘写入错误,如:
creating template1 database in /var/lib/postgresql/data/base/1 ...
FATAL: could not write to file "pg_xlog/xlogtemp.25": Input/output error
或
FATAL: could not close file "base/1/1249": Input/output error
FATAL: could not close file "base/1/2603": Input/output error
CONTEXT: writing block 0 of relation base/1/1247
使用命名卷时,一切运行良好,但命名卷实际上并不是保存数据的安全方法。例如,在Docker for Mac中,它们都隐藏在巨大的qcow2虚拟磁盘映像中。
您建议在非Linux主机中保留PostgreSQL状态的策略是什么?
我应该每隔n分钟将备份保存到已装入的文件夹中,并在启动时检查数据文件夹并在需要时从备份恢复吗?或者我应该只在指定的卷和主机安装的卷之间进行rsync?是否有任何项目/ Docker文件解决了这个问题?