首页 > 解决方案 > Docker 上的 Postgres 立即退出并删除外部文件系统中的数据

问题描述

我正在按照本文中的说明提取 Postgres Docker 映像并运行它。

$ mkdir -p $HOME/docker/volumes/postgres
$
$ docker pull postgres:9.5
$
$ docker run --name pg-docker -e POSTGRES_PASSWORD=postgres -d -p 5432:5432 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data postgres:9.5

我看到在-v上面挂载的路径中创建了 Postgres 文件和数据,但容器在启动后很快退出,并且文件消失了。

我的问题:

  1. 为什么容器完全退出?

  2. 为什么会删除所有文件?的全部目的-v是在容器外保存数据。

更新1:

以下是容器短暂启动时我能够从容器中获取的日志(容器退出后,我只收到一条错误消息Error: No such container: postgres:9.5但没有日志):

$ docker logs pg-docker
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Etc/UTC
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok

更新 2:

docker在没有产生更多输出的情况下运行-d,这是造成这种情况的原因:

creating template1 database in /var/lib/postgresql/data/base/1 ...
LOG:  could not link file "pg_xlog/xlogtemp.36" to "pg_xlog/000000010000000000000001": Operation not supported
FATAL:  could not open file "pg_xlog/000000010000000000000001": No such file or directory
child process exited with exit code 1
initdb: removing contents of data directory "/var/lib/postgresql/data"

我在 Git Bash shell 内的 Windows 系统上是否重要?

标签: postgresqldocker

解决方案


推荐阅读